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

Script result

Lom
Tera Contributor

Hello,

I have an issue with a script and I don't know what wrong.

The script returns the same value for x and y instead of two different values. Can you help?

 

var x,y;
var req, item;
var i=1;

var gr2 = GlideRecord('sc_req_item');
gr2.addQuery('requested_for', '86f01750db3cdf00269cfd431d9619d3');
gr2.addQuery('cat_item', 'e660f7838781b1101709a8280cbb35e0');
gr2.orderByDesc('sys_created_on');
gr2.setLimit(2);
gr2.query();

while (gr2.next()) {
    if (i == 1) {
        x = gr2.sys_id;
        i++;
    }
    if (i == 2) {
        y = gr2.sys_id;
        i++;
    }
    gs.info('sys_id=' + gr2.sys_id + '  for=' + gr2.requested_for + '  created=' + gr2.sys_created_on);
}
	


gs.info('id1='+x+'  id2='+y);

and the result is:

*** Script: sys_id=426e27b2c3106e109dd63fc90501312c  for=86f01750db3cdf00269cfd431d9619d3  created=2025-03-19 13:30:36
*** Script: sys_id=27cdab72c3106e109dd63fc905013193  for=86f01750db3cdf00269cfd431d9619d3  created=2025-03-19 13:27:58
*** Script: id1=27cdab72c3106e109dd63fc905013193  id2=27cdab72c3106e109dd63fc905013193

 

why are id1 and id2 igal?

1 ACCEPTED SOLUTION

Nilesh Pol
Tera Guru
Tera Guru

Hi @Lom 

verify with below updated script:

var x, y;
var i = 1;

var gr2 = new GlideRecord('sc_req_item');
gr2.addQuery('requested_for', '86f01750db3cdf00269cfd431d9619d3');
gr2.addQuery('cat_item', 'e660f7838781b1101709a8280cbb35e0');
gr2.orderByDesc('sys_created_on');
gr2.setLimit(2);
gr2.query();

while (gr2.next()) {
if (i == 1) {
x = gr2.sys_id.toString(); // Ensure string conversion
} else if (i == 2) {
y = gr2.sys_id.toString();
}

gs.info('sys_id=' + gr2.sys_id + ' for=' + gr2.requested_for + ' created=' + gr2.sys_created_on);
i++; 
}

gs.info('id1=' + x + ' id2=' + y);

View solution in original post

11 REPLIES 11

Lom
Tera Contributor

Now if you add toString() only, id1 and id2 are still the same:

var x,y;
var req, item;
var i=1;

var gr2 = GlideRecord('sc_req_item');
gr2.addQuery('requested_for', '86f01750db3cdf00269cfd431d9619d3');
gr2.addQuery('cat_item', 'e660f7838781b1101709a8280cbb35e0');
gr2.orderByDesc('sys_created_on');
gr2.setLimit(2);
gr2.query();

while (gr2.next()) {
    if (i == 1) {
        x = gr2.sys_id.toString();
        i++;
    }
    if (i == 2) {
        y = gr2.sys_id.toString();
        i++;
    }
    gs.info('sys_id=' + gr2.sys_id + '  for=' + gr2.requested_for + '  created=' + gr2.sys_created_on);
}
	


gs.info('id1='+x+'  id2='+y);

 

*** Script: sys_id=ffd8fc53c3d0ae109dd63fc905013127  for=86f01750db3cdf00269cfd431d9619d3  created=2025-03-20 13:34:26
*** Script: sys_id=a7187853c3d0ae109dd63fc905013151  for=86f01750db3cdf00269cfd431d9619d3  created=2025-03-20 13:31:07
*** Script: id1=ffd8fc53c3d0ae109dd63fc905013127  id2=ffd8fc53c3d0ae109dd63fc905013127

Ah, yes, in this use case you should also only increment 'i' once in the while loop instead of in each if block:

var x,y;
var req, item;
var i=1;

var gr2 = GlideRecord('sc_req_item');
gr2.addQuery('requested_for', '86f01750db3cdf00269cfd431d9619d3');
gr2.addQuery('cat_item', 'e660f7838781b1101709a8280cbb35e0');
gr2.orderByDesc('sys_created_on');
gr2.setLimit(2);
gr2.query();

while (gr2.next()) {
    if (i == 1) {
        x = gr2.getValue('sys_id');
    }
    if (i == 2) {
        y = gr2.getValue('sys_id');
    }
	i++;
    gs.info('sys_id=' + gr2.sys_id + '  for=' + gr2.requested_for + '  created=' + gr2.sys_created_on);
}

gs.info('id1='+x+'  id2='+y);