[progress Communities] [progress Openedge Abl] Forum Post: Dataset Batching & Index Question

Status
Not open for further replies.
P

Paul Mowat

Guest
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

Continue reading...
 
Status
Not open for further replies.
Top