Check for existing record in a table

nicolemccray
Tera Expert

I have a custom table that inserts some user fields each time a request is submitted.  How can I do a check on the table to see if the Employee ID already exists, and if it does, display a message to the requester and do not allow submission?

1 ACCEPTED SOLUTION

I was able to get this working by using an OnChange script:

 

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}

var employeeId = g_form.getValue('employee_id');

if (employeeId != ''){

var ga_applicant = new GlideAjax("CorporateTravel");
ga_applicant.addParam("sysparm_name","getRequestInfo");
ga_applicant.addParam("employeeId", employeeId );
ga_applicant.getXML(ajaxResponse);

}

function ajaxResponse(serverResponse) {
var applicant = serverResponse.responseXML.getElementsByTagName("applicant");

if (applicant.length > 0){
already_applied = true;

alert("This person already has an application request in the system. Only one application request for a person may be submitted.");

g_form.setValue('understand_accept1', '');
g_form.setValue('understand_accept2', '');
g_form.setValue('understand_accept3', '');

}
}

}

View solution in original post

17 REPLIES 17

Alternatively you can create a Before Business rule on the custom table with the script below.

(function executeRule(current, previous /*null when async*/) {

// Add your code here

var user = gs.getUserID();
var gr = new GlideRecord('u_travel');
gr.addQuery('u_employee_id',current.u_employee_id);
gr.query();

if(gr.next())
{

gs.addInfoMessage("Employee ID already present");
current.setAbortAction(true);
}


})(current, previous);

- Pradeep Sharma

Hi Pradeep,

The 'OnSubmit' script worked to block an entry being added to the table, but it did not prevent submission of the form and did not present the 'alert' message.

Are you able to reproduce this in your personal developer instance? 

- Pradeep Sharma

I was able to get this working by using an OnChange script:

 

function onChange(control, oldValue, newValue, isLoading) {
if (isLoading || newValue == '') {
return;
}

var employeeId = g_form.getValue('employee_id');

if (employeeId != ''){

var ga_applicant = new GlideAjax("CorporateTravel");
ga_applicant.addParam("sysparm_name","getRequestInfo");
ga_applicant.addParam("employeeId", employeeId );
ga_applicant.getXML(ajaxResponse);

}

function ajaxResponse(serverResponse) {
var applicant = serverResponse.responseXML.getElementsByTagName("applicant");

if (applicant.length > 0){
already_applied = true;

alert("This person already has an application request in the system. Only one application request for a person may be submitted.");

g_form.setValue('understand_accept1', '');
g_form.setValue('understand_accept2', '');
g_form.setValue('understand_accept3', '');

}
}

}

Hi Nicole,

As suggested by @Jaspal Singh you can use before insert BR on the table and block the submission with the message

Regards
Ankur

Regards,
Ankur
Certified Technical Architect  ||  9x ServiceNow MVP  ||  ServiceNow Community Leader