We're reclaiming inactive PDIs to keep them available for active builders. Learn what's changing, who's affected, and how to protect your work. Read More

Using loop to update record via GlideRecord

Moy1
Mega Guru

I have 3 custom fields in the sn_hr_core_profile table. The details are as follows:

1. u_org_1 (Reference to can_department table)
2. u_org_2 (Reference to can_department table)
3. u_org_3 (Reference to can_department table)

I am running a background script to update these fields. For the purpose of simplification, I have simplified my code:

var users = new GlideRecord('sn_hr_core_profile');
users.query();
var orgNumber='';

while(users.next()){
	var k=0;
	for(k=0;k<3;k++){
		orgNumber.initialize();
		orgNumber = 'u_org_'+k;
		users.orgNumber = '835e6c81db12f748ed4e94f7db9619a9';
         }
users.update();
}

Using this code I am unable to update the records. However, when I try something like:

users.u_org_1 = '835e6c81db12f748ed4e94f7db9619a9';
users.u_org_2 = '835e6c81db12f748ed4e94f7db9619a9';
users.u_org_3 = '835e6c81db12f748ed4e94f7db9619a9';​

it works perfectly. Any suggestions on what I am might be doing wrong?

 

 

1 ACCEPTED SOLUTION

Mark Roethof
Tera Patron

Hi there,

What is it you are trying to achieve? Just to update all records having the same u_u_org_1, u_org_2 and u_org_3? Have you considered an easier query with update multiple? I also see a .initialize(). What purpose did you had in mind? The code doesn't make sence to me, though I don't know the functional thought.

Something like:

var gr = new GlideRecord('sn_hr_core_profile');
gr._query();

gr.setValue('gr.u_org_1', '835e6c81db12f748ed4e94f7db9619a9');
gr.setValue('gr.u_org_2', '835e6c81db12f748ed4e94f7db9619a9');
gr.setValue('gr.u_org_3', '835e6c81db12f748ed4e94f7db9619a9');
gr.updateMultiple();

Or is your looping the purpose? Just as exercise or something?

Maybe something like this (untested!):

var gr = new GlideRecord('sn_hr_core_profile');
gr._query();

for(var orgInt = 1; orgInt  < 4; orgInt ++) {
	gr.setValue('gr.u_org_' + orgInt, '835e6c81db12f748ed4e94f7db9619a9');
}
gr.updateMultiple();

If my answer helped you in any way, please then mark it as helpful.

Kind regards,
Mark

---

LinkedIn

 

Kind regards,

 

Mark Roethof

Independent ServiceNow Consultant

10x ServiceNow MVP

---

 

~444 Articles, Blogs, Videos, Podcasts, Share projects - Experiences from the field

LinkedIn

View solution in original post

2 REPLIES 2

Mark Roethof
Tera Patron

Hi there,

What is it you are trying to achieve? Just to update all records having the same u_u_org_1, u_org_2 and u_org_3? Have you considered an easier query with update multiple? I also see a .initialize(). What purpose did you had in mind? The code doesn't make sence to me, though I don't know the functional thought.

Something like:

var gr = new GlideRecord('sn_hr_core_profile');
gr._query();

gr.setValue('gr.u_org_1', '835e6c81db12f748ed4e94f7db9619a9');
gr.setValue('gr.u_org_2', '835e6c81db12f748ed4e94f7db9619a9');
gr.setValue('gr.u_org_3', '835e6c81db12f748ed4e94f7db9619a9');
gr.updateMultiple();

Or is your looping the purpose? Just as exercise or something?

Maybe something like this (untested!):

var gr = new GlideRecord('sn_hr_core_profile');
gr._query();

for(var orgInt = 1; orgInt  < 4; orgInt ++) {
	gr.setValue('gr.u_org_' + orgInt, '835e6c81db12f748ed4e94f7db9619a9');
}
gr.updateMultiple();

If my answer helped you in any way, please then mark it as helpful.

Kind regards,
Mark

---

LinkedIn

 

Kind regards,

 

Mark Roethof

Independent ServiceNow Consultant

10x ServiceNow MVP

---

 

~444 Articles, Blogs, Videos, Podcasts, Share projects - Experiences from the field

LinkedIn

Hi Mark,

Thanks for you response. Your 2nd suggestion did the trick.

The purpose of this question was to make the loop work. I just could not make the loop work with my script. The real purpose of this question was difficult to explain without providing a lot of context, which I felt was unnecessary and I, therefore, simplified the script.

 

Thanks once again.