Dataset Batching & Index Question - Forum - OpenEdge Development - Progress Community

Dataset Batching & Index Question

 Forum

Dataset Batching & Index Question

This question is not answered

Hi All,

I'm making some changes to implement batching in a ultragrid. I have got it working mostly.

I have the following code.

/*
** Loop round the payrolls populating the temp-table as required.
*/
DO iCnt = 1 TO NUM-ENTRIES(THIS-OBJECT:PayrollList): 

ASSIGN iPayNo = INTEGER(ENTRY(iCnt, THIS-OBJECT:PayrollList)). 

cQueryString = "PRESELECT EACH employee NO-LOCK WHERE employee.payno = " + STRING(iPayNo) + 
(IF pcQueryString <> "" THEN " AND " + pcQueryString ELSE "") + 
(IF iUserNo <> 0 THEN " AND SUBSTRING(employee.secstring," + STRING(iUserNo) + ",1) <> ~"N~"" ELSE "") +
(IF pcSortPhrase <> "" THEN " " + pcSortPhrase ELSE "").

QUERY qEmployee:QUERY-PREPARE (cQueryString).
QUERY qEmployee:QUERY-OPEN().

If I just specify one payroll it works perfectly fine. However If i specify a list i get issues with the next-rowid and setting the restart-rowid for the next batch, I believe this is because the query has changed and it doesn't know the rowid anymore. I get a message "Cannot reposition query to specified rowid (7331)"

When I first developed this I initially used a list so I can ensure that I still use the required index on the table and don't break it by using a lookup function within the query.

I'm a bit stumped on how I can ensure i process all the required payrolls but ensuring that batching will work and the index will remain in tact. 

Anyone have any ideas? Only one left I have is to try and maintain the context of where i am in the DO loop between fetches of data.

Thanks

Paul


Paul Mowat

Principal Software Developer

Advanced Business Solutions

All Replies
  • Just had a thought that I could also parse the payroll list into a string of " payno = 1 or payno = 2 or payno = 3" etc but its not really nice. Is there a better way?


    Paul Mowat

    Principal Software Developer

    Advanced Business Solutions