

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
Hello Experts,
My intention is to delete Eventout data on weekly basis. I have written the following JS to achieve the same. It's working fine while records are there. But, while no records are found, then it is throwing error as delete terminated - could not access row id(display,process.option).
Please let me know how to overcome so that if no records found, it will print as "No Records Found" instead of throwing error.
PurgeEventout()
function PurgeEventout()
{
var fpurge = new SCFile("eventout");
var rc;
var time = new Date();
var timecalc = 4560*80000;
var tempbefore = new Date(time.getTime() - timecalc);
var type = "page"
//var type = "email/page/pmc"
//var qry = "evtype=\"" + type + "\" and evsysseq=\"0000000100296836\""
var qry = "evtype=\"" + type +"\""
// + "\" and evexpire<\"" + tempbefore +"\""
rc = fpurge.doSelect( qry );
//print(tempbefore)
do
{
if ( tempbefore > fpurge.evexpire)
{
//print(fpurge.evexpire)
fpurge.doDelete()
}
}while(fpurge.getNext() == RC_SUCCESS)
print("script complete")
}
Regards,
Avi
Accepted Solutions

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
You need to check if the query returns as well as the getnext. Try following script:
function PurgeEventout() { var fpurge = new SCFile("eventout"); var rc; var time = new Date(); var timecalc = 4560 * 80000; var tempbefore = new Date(time.getTime() - timecalc); var type = "page" //var type = "email/page/pmc" //var qry = "evtype=\"" + type + "\" and evsysseq=\"0000000100296836\"" var qry = "evtype=\"" + type + "\"" // + "\" and evexpire<\"" + tempbefore +"\"" rc = fpurge.doSelect(qry); //print(tempbefore) while (rc == RC_SUCCESS) { if (tempbefore > fpurge.evexpire) { //print(fpurge.evexpire) fpurge.doDelete() } rc = fpurge.getNext(); } print("script complete") } PurgeEventout();

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
Use "while" statement instead of "do-while" statement.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
You need to check if the query returns as well as the getnext. Try following script:
function PurgeEventout() { var fpurge = new SCFile("eventout"); var rc; var time = new Date(); var timecalc = 4560 * 80000; var tempbefore = new Date(time.getTime() - timecalc); var type = "page" //var type = "email/page/pmc" //var qry = "evtype=\"" + type + "\" and evsysseq=\"0000000100296836\"" var qry = "evtype=\"" + type + "\"" // + "\" and evexpire<\"" + tempbefore +"\"" rc = fpurge.doSelect(qry); //print(tempbefore) while (rc == RC_SUCCESS) { if (tempbefore > fpurge.evexpire) { //print(fpurge.evexpire) fpurge.doDelete() } rc = fpurge.getNext(); } print("script complete") } PurgeEventout();


- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content
Thanks a lot to both of you.
Appreciate your response. Using While() instead of doWhile() literally resolved my issue.
I am accepting it as Solution.