save values from field to table

aastha3
Giga Contributor

Hi ,

I am looking for a code to save 2 values in the Virtual Machine CI form (cmdb_ci_vm table). Form will have fields VMname1 , IPAddress1 Similarly VMname2 , IpAddress2 ,VMname3 IpAddress3 and have to save the data filled in these fields in a table similarly with same field names.

If any of these user entered data repeats then it should throw an error .

VMname or IPAddress should not be duplicated.

Do guide me what to do.

1 ACCEPTED SOLUTION

deepakgarg
ServiceNow Employee
ServiceNow Employee

Now, update your script include to:



var CheckVMDuplicate = Class.create();


CheckVMDuplicate.prototype = Object.extendsObject(AbstractAjaxProcessor, {



  checkDuplicate : function() {


  var s1 = this.getParameter('sysparm_s1');


  var s2 = this.getParameter('sysparm_s2');


  var s3 = this.getParameter('sysparm_s3');



  var gr = new GlideRecord('u_vm_info');//your table name u_vm_info


  var gc = gr.addQuery('u_vm1', s1);//Make sure your field names are VM1, VM2, VM3. not titles.


  gc.addOrCondition('u_vm2', s1);


  gc.addOrCondition('u_vm3', s1);


if(s2 != '') {


  gc.addOrCondition('u_vm1', s2);


  gc.addOrCondition('u_vm2', s2);


  gc.addOrCondition('u_vm3', s2);


}


if(s3 != '') {


  gc.addOrCondition('u_vm1', s3);


  gc.addOrCondition('u_vm2', s3);


  gc.addOrCondition('u_vm3', s3);


}


  gr.query();


  if(gr.next())


  return false;


gr.initialize();
gr.u_vm1 = s1;
gr.u_vm2 = s2;
gr.u_vm3 = s3;
gr.insert();

  return true;


  },



  type: 'CheckVMDuplicate'


});



Add these lines, it will insert the values in the table also.


View solution in original post

41 REPLIES 41

deepakgarg
ServiceNow Employee
ServiceNow Employee

Hi aastha,



Change your client script to:



function onSubmit() {


  //Type appropriate comment here, and begin script below


  var num = g_form.getValue('number_of_vms');


  var s1 = g_form.getValue('vm_name');


  var s2 = g_form.getValue('vm_name2');


  var s3 = g_form.getValue('vm_name3');


  var ga = new GlideAjax('CheckVMDuplicate');


  ga.addParam('sysparm_name', 'checkDuplicate');


  if(num == 1 && s1 == '') {


  alert('value is empty / duplicate values');


  return false;


  }


  else if(num == 2 && (s1 == '' || s2 == '' || s1 == s2)) {


  alert('value is empty / duplicate values');


  return false;


  }


  else if(num == 3 && (s1 == '' || s2 == '' || s3 == '' || s1 == s2 || s2 == s3 || s1 == s3)) {


  alert('value is empty / duplicate values');


  return false;


  }


  ga.addParam('sysparm_s1', s1);


  ga.addParam('sysparm_s2', s2);


  ga.addParam('sysparm_s3', s3);


  ga.getXMLWait();


  var res = ga.requestObject.responseXML.getElementsByTagName("result")[0];


  if(res.getAttribute('f1') == 'false') {


  alert('Duplicate value in s1');


  return false;


  }


  if(res.getAttribute('f2') == 'false') {


  alert('Duplicate value in s2');


  return false;


  }


  if(res.getAttribute('f3') == 'false') {


  alert('Duplicate value in s3');


  return false;


  }


}



Let me know the results, if that works for you.


yes this works now deepakgarg


I want urgent help on this one as well.


On RITM state = closed complete



Now I have to save VM Name values when RITM state = closed complete and Catalog = Server provisioning.


It should take VMName1 , VMName2 , VMName 3 from the RITM catalog variables and it should store on same table u_vm_info.


But if again that RITM ticket is updated it should not store the same VMname values .



Please reply on this post On RITM state = closed complete   with the correct code