Why is setLimit() ignored in this GlideRecord query?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-10-2022 08:42 AM
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();
}
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-11-2022 02:57 AM
Hi Chuck,
the log looks good so no problem there 😞
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-11-2022 03:04 AM
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
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎02-11-2022 03:06 AM
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--;
}