While loop update only 1 record instead of all records

Bird1
Mega Sage

Hello,

 

Need help. I am working on UI action script. The goal is once the user click on 'cancel' button on this UI action, all Onboarding Task tickets (custom table) under the same Boarding Request (custom table too) will be updated to 6 = close skipped.

 

But when I test, it will only update 1 record instead of all Onboarding Task records (ie. There are totally 6 Boarding Task tickets but it will update only 1 Boarding Task ticket). 

 

Can anyone help me? 

 

 

var btask = new GlideRecord("x_alite_hr_onboarding_task");
btask.addQuery("onboarding_request", current.sys_id);
btask.query();

while (btask.next())
count++;
gs.addInfoMessage(count);

btask.setValue('state', '6');

btask.updateMultiple();
action.setRedirectURL(current);

1 ACCEPTED SOLUTION

Murthy Ch
Giga Sage

Hi @Bird1 

If you are using updateMultiple() use below logic:

var btask = new GlideRecord("x_alite_hr_onboarding_task");
btask.addQuery("onboarding_request", current.sys_id);
btask.query();
btask.setValue('state', '6');
btask.updateMultiple();
action.setRedirectURL(current);


If you are using while loop you have write like below:

var btask = new GlideRecord("x_alite_hr_onboarding_task");
btask.addQuery("onboarding_request", current.sys_id);
btask.query();
while (btask.next())
{
count++;
btask.setValue('state', '6');
btask.update(); //changed here..
}
gs.addInfoMessage(count);
action.setRedirectURL(current);

Hope it helps..

 

Thanks,
Murthy

View solution in original post

4 REPLIES 4

Sagar Pagar
Tera Patron

Hi @Bird1,

 

Try this updated scripts -

 

 

var btask = new GlideRecord("x_alite_hr_onboarding_task");
btask.addQuery("onboarding_request", current.sys_id);
btask.query();
while (btask.next()){
count++;
gs.addInfoMessage(count);
btask.setValue('state', '6');
btask.update();

}
action.setRedirectURL(current);

 

 

Thanks,
Sagar Pagar

The world works with ServiceNow

Hari haran
Tera Guru

Hi,

Can you please try this,

 

var btask = new GlideRecord("x_alite_hr_onboarding_task");
btask.addQuery("onboarding_request", current.sys_id);
btask.query();

while (btask.next())

{
gs.addInfoMessage(count);

btask.setValue('state', '6');

btask.update();

}
action.setRedirectURL(current);

Murthy Ch
Giga Sage

Hi @Bird1 

If you are using updateMultiple() use below logic:

var btask = new GlideRecord("x_alite_hr_onboarding_task");
btask.addQuery("onboarding_request", current.sys_id);
btask.query();
btask.setValue('state', '6');
btask.updateMultiple();
action.setRedirectURL(current);


If you are using while loop you have write like below:

var btask = new GlideRecord("x_alite_hr_onboarding_task");
btask.addQuery("onboarding_request", current.sys_id);
btask.query();
while (btask.next())
{
count++;
btask.setValue('state', '6');
btask.update(); //changed here..
}
gs.addInfoMessage(count);
action.setRedirectURL(current);

Hope it helps..

 

Thanks,
Murthy

Bird1
Mega Sage

Thank you very much. It's workable.