The CreatorCon Call for Content is officially open! Get started here.

gliderecord query by state label

Jim60
Tera Expert

I know this is a bit of an odd question but is there a way to perform a query by the state label instead of the value?   Using state.label does not work. (I'm well aware that using the value is by far the safest.)

1 ACCEPTED SOLUTION

You can try what Shishir has suggested. Or try this



  1. var inc = new GlideRecord('incident');
  2. inc.addQuery('state',getState('incident','New'));
  3. inc.query();
  4. while (inc.next()) {
  5.     gs.print('-----------'+inc.number);
  6. }
  7. function getState(tablename,label)
  8. {
  9. var ch = new GlideRecord('sys_choice');
  10. ch.addQuery('name',tablename);
  11. ch.addQuery('label',label);
  12. ch.query();
  13. if (ch.next())
  14. {
  15. return ch.value;
  16. }
  17. }

Please mark this response as correct or helpful if it assisted you with your question.

View solution in original post

11 REPLIES 11

The default operator is =,   I want results where state='New'.   Contains should look for instances where the state has the word somewhere in the string, blahNewblah.   I tested CONTAINS just as you have listed here to make sure I wasn't missing something and still no result.   Did you test this and get a different result?


Can we try something like this,



var gr = new GlideRecord('incident');


gr.addJoinQuery('sys_choice', 'sys_class_name', 'name');


gr.addQuery('active', true);


gr.addQuery('label', 'New');


gr.query();


while(gr.next()){


gs.print(gr.number);


}


You can try what Shishir has suggested. Or try this



  1. var inc = new GlideRecord('incident');
  2. inc.addQuery('state',getState('incident','New'));
  3. inc.query();
  4. while (inc.next()) {
  5.     gs.print('-----------'+inc.number);
  6. }
  7. function getState(tablename,label)
  8. {
  9. var ch = new GlideRecord('sys_choice');
  10. ch.addQuery('name',tablename);
  11. ch.addQuery('label',label);
  12. ch.query();
  13. if (ch.next())
  14. {
  15. return ch.value;
  16. }
  17. }

Please mark this response as correct or helpful if it assisted you with your question.

This is what I ended up doing...


var inc = new GlideRecord('incident');


var values = getChoiceValues('incident','state',['New','Active'];


inc.addQuery('state','IN',values);


inc.query();


while (inc.next()) {


    gs.print('-----------'+inc.number);


}





getChoiceValues: function(table, element, labels){


      if (Array.isArray(labels)){


              labels = labels.join();


      }


      var value = [];


      var choice = new GlideRecord('sys_choice');


      choice.addQuery('name',table);


      choice.addQuery('element',element);


      choice.addQuery('label','IN',labels);


      choice.addQuery('inactive',false);


      choice.query();


      while (choice.next()) {


          value.push(choice.value.toString());


      }


      if(value.length){


          return value.join();


      }


      return labels;


}


This code is working ,Thanks