Why is setLimit() ignored in this GlideRecord query?

Igor __tek
Tera Contributor

Hi people,

I had this simple script running in UI Action on the Part Requirement form. For some reason even if use setLimit() with hardcoded value or variable it is ignored and Query always updates all records returned from addEncodedQuery.

var prModel = current.model.sys_id;
var currentPrId = current.sys_id;
var prQuantity = parseInt(current.required_quantity);
var parentSOT = current.service_order_task.sys_id;
var parentWOT = "";
var grWOT = new GlideRecord('wm_task');
if (grWOT.get(parentSOT)) {
	parentWOT = grWOT;
}
var parentStockroom = parentWOT.u_destination_stockroom.sys_id;
var query = "substatus=available";
	query += "^stockroom=" + parentStockroom; 
	query += "^model=" + prModel; 
var grAsset = new GlideRecord('alm_asset');
	grAsset.addEncodedQuery(query);
	grAsset.setLimit(1); // .setLimit(prQuantity);
	grAsset.query();
while (grAsset.next()) {
	grAsset.u_part_requirement.setValue(currentPrId);
	grAsset.install_status.setValue("6");
	grAsset.substatus.setValue("reserved");
	grAsset.update();
}
7 REPLIES 7

Hi Chuck,

the log looks good so no problem there 😞

Jake Sadler
Kilo Sage

Hi,

 

I'm not sure why .setLimit() isn't working but try this:

var arr = [];

while (grAsset.next())

{

arr.push(grAsset.sys_id);

 

}

 

for (var i = 0; i < 20; i++){

var gr = new GlideRecord('alm_asset'){

gr.get(arr[i]); 

gr.u_part_requirement.setValue(currentPrId);

gr.install_status.setValue("6");

gr.substatus.setValue("reserved");

gr.update();

}

 

Thanks

 

Jake

 

 

Igor __tek
Tera Contributor

This issue is not resolved but I did incorporate this workaround until I find the reason why the setLimit() doesn't work.

var i = prQuantity;
var grAsset = new GlideRecord('alm_asset');
    grAsset.addEncodedQuery(query);
    grAsset.setLimit(1); // .setLimit(prQuantity);
    grAsset.query();
while (grAsset.next()) {
	if (i > 0) {
		grAsset.u_part_requirement.setValue(currentPrId);
		grAsset.install_status.setValue("6");
		grAsset.substatus.setValue("reserved");
		grAsset.update();
	}
	i--;
}