Can I reset and then reuse a GlideRecord?

MBarrott
Mega Sage

Looking for more optimal coding practices and wanted to get some feedback. 

 

I have a script which is working great but I'm creating three GlideRecords that all reference the same table, albeit, they are ultimately doing different queries (inserts, deletions, record gathering etc).

 

Is there a way to clear out a GlideRecord and then simply reuse it, rather than declaring duplicates to accomplish the same thing? 

6 REPLIES 6

Hi @Danish Bhairag2 , 

 

See script below - error is caused on the GlideRecord update. Using a new GlideRecord doesn't cause this. (Unique key violation)

var grStakeGrpMem = new GlideRecord('sys_user_grmember');
grStakeGrpMem.addEncodedQuery('group=25dcde621b58a850f30dfc03cc4bcb53'); // EDI Applications Managers group (test sample)
grStakeGrpMem.query();

// variable declarations
var addStakeArr = []; // add stakeholders 
var grStakeHolAdd = new GlideRecord('dmn_stakeholder_register'); // declare gliderecord object

// loop through found records
while(grStakeGrpMem.next())  
{
	if(grStakeGrpMem.getDisplayValue('user') != '') // // push record(s) to array if display value is not null
	{
		addStakeArr.push(grStakeGrpMem.getValue('user'));
	}
}

// retrive array values and populate registry with new records
for(var i = 0; i < addStakeArr.length; i++) 
{
	grStakeHolAdd.initialize();
	grStakeHolAdd.setValue('user', addStakeArr[i]);
	grStakeHolAdd.insert();
}

// clear gliderecord and query against users in stakeholder group 
grStakeHolAdd.initialize(); 
grStakeHolAdd.addQuery('user', 'IN', addStakeArr.toString());
grStakeHolAdd.query();

// loop through queried records 
while(grStakeHolAdd.next())
{
	if(grStakeHolAdd.getValue('active', false)) // if active field is false, enter if and set active to true
	{
		grStakeHolAdd.setValue('active', true);
		grStakeHolAdd.update();		// ERROR HAPPENS HERE 
	}
}

// clear gliderecord and query against users not in stakeholder group or have an inactive user record
grStakeHolAdd.initialize();
grStakeHolAdd.addQuery('user', 'NOT IN', addStakeArr.toString());
grStakeHolAdd.addOrCondition('sys_class_name=dmn_stakeholder_register^user.active=false');
grStakeHolAdd.query();

// loop through queried records
while(grStakeHolAdd.next())
{
	if(grStakeHolAdd.getValue('active', true)) // if active field is true, enter if and set active to false
	{
		grStakeHolAdd.setValue('active', false);
		grStakeHolAdd.update();
	}
}

 

 

 

Hi @Danish Bhairag2

 

See script below:

var grStakeGrpMem = new GlideRecord('sys_user_grmember');
grStakeGrpMem.addEncodedQuery('group=25dcde621b58a850f30dfc03cc4bcb53'); // EDI Applications Managers group (test sample)
grStakeGrpMem.query();

// variable declarations
var addStakeArr = []; // add stakeholders 
var grStakeHolAdd = new GlideRecord('dmn_stakeholder_register'); // declare gliderecord object

// loop through found records
while(grStakeGrpMem.next())  
{
	if(grStakeGrpMem.getDisplayValue('user') != '') // // push record(s) to array if display value is not null
	{
		addStakeArr.push(grStakeGrpMem.getValue('user'));
	}
}

// retrive array values and populate registry with new records
for(var i = 0; i < addStakeArr.length; i++) 
{
	grStakeHolAdd.initialize();
	grStakeHolAdd.setValue('user', addStakeArr[i]);
	grStakeHolAdd.insert();
}

// clear gliderecord and query against users in stakeholder group 
grStakeHolAdd.initialize(); 
grStakeHolAdd.addQuery('user', 'IN', addStakeArr.toString());
grStakeHolAdd.query();

// loop through queried records 
while(grStakeHolAdd.next())
{
	if(grStakeHolAdd.getValue('active', false)) // if active field is false, enter if and set active to true
	{
		grStakeHolAdd.setValue('active', true);
		grStakeHolAdd.update();		// ERROR HAPPENS HERE 
	}
}

// clear gliderecord and query against users not in stakeholder group or have an inactive user record
grStakeHolAdd.initialize();
grStakeHolAdd.addQuery('user', 'NOT IN', addStakeArr.toString());
grStakeHolAdd.addOrCondition('sys_class_name=dmn_stakeholder_register^user.active=false');
grStakeHolAdd.query();

// loop through queried records
while(grStakeHolAdd.next())
{
	if(grStakeHolAdd.getValue('active', true)) // if active field is true, enter if and set active to false
	{
		grStakeHolAdd.setValue('active', false);
		grStakeHolAdd.update();
	}
}