- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-29-2016 06:51 AM
Hi All,
I want to query the child value based on parent value in table cmdb_rel_ci
How can this be done
Thanks,
Abhi
Solved! Go to Solution.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-29-2016 12:20 PM
Thanks. I didn't see that you changed the childList.push() line. You cannot dot-walk inside a getValue() call. IN your case, use this.
childList.push(rel.child.name);
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-29-2016 07:40 AM
My requirement is based on Service offering selection on change form, I want those values to get checked in the cmdb_rel_ci table on parent column then get the respective child values from relationship table and final;ly display them in the screen.
Client script is
function onChange(control, oldValue, newValue, isLoading, isTemplate) {
if (isLoading || newValue === '') {
return;
}
var gaj=new GlideAjax('HelloMan');
gaj.addParam('sysparm_name','helloman');
var ab_data=g_form.getDisplayBox('business_service').value;
gaj.addParam('sysparm_business_service',ab_data);
gaj.getXML(HelloManparse);
function HelloManparse(response)
{
var answer = response.responseXML.documentElement.getAttribute("answer");
// g_form.addInfoMessage(answer);
// alert(answer);
// var list = answer;
var array = answer.split(",");
for (var i=0; i < array.length; i++) {
g_form.addInfoMessage("\nReference value is: " + array[i]);
}
// g_form.addInfoMessage(answer);
}
//Type appropriate comment here, and begin script below
}
Server script
var HelloMan = Class.create();
HelloMan.prototype = Object.extendsObject(AbstractAjaxProcessor, {
helloman : function(){
var parentId = this.getParameter('sysparm_business_service');
var childList = [];
var rel = new GlideRecord('cmdb_rel_ci');
rel.addQuery('parent', parentId);
rel.query();
while (rel.next()) {
childList.push(rel.getValue('child'));
}
return childList.join(',');
// gs.print(childList);
// return childList;
// var getchild=new GlideRecord('cmdb_rel_ci');
// // return this.getParameter('sysparm_business_service');
// getchild.addQuery('parent',this.getParameter('sysparm_business_service'));
// getchild.query();
// while(getchild.next())
// {
// return getchild.child;
// }
}
// type: 'HelloMan';
});

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-29-2016 07:49 AM
I recommend adding some debug statements to find out:
If the parent ID is being passed correctly and received by the script include.
How many rows are being returned by the rel.query()
What are the contents of the childList array before it gets returned?
What does the client script see in the 'answer' variable after it is parsed?
FWIW, you might want to change your variable name from "array" to "arr" or "list" just to be safe.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-29-2016 08:46 AM
if i remove childList.join(',') -> org.mozilla.javascript.NativeArray@f5da90
if returned childList.join(',') -> its empty in g_form.addinfomessage

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-29-2016 08:57 AM
How about the other questions?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
‎08-29-2016 09:12 AM
rwo count=0;
If the parent ID is being passed correctly and received by the script include. > parent id when passed to client script it return the parent name correctly
child array list contains after parsed in answer variable> org.mozilla.javascript.NativeArray@1ff8597
childarray contains before sneding to client script as > org.mozilla.javascript.NativeArray@136a76e