Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Scan and Update with 2 cursors
Message
From
20/08/2008 13:14:23
 
 
To
14/08/2008 16:31:13
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Environment versions
Visual FoxPro:
VFP 8 SP1
OS:
Windows 2000 SP4
Database:
Visual FoxPro
Miscellaneous
Thread ID:
01338981
Message ID:
01340419
Views:
13
>>Hi All,
>>
>>I have a program, where I collect info into 1 cursor (fstcursor), then use that cursor to update a different cursor (mncursor). At the moment, I have to do a scan of fstcursor, and update mncursor within that scan. With 100,000+ records, this takes a while. Is there a better way to do this?
>>
>>I have a lot of these updates in the program, plus some fors. At the moment, the program takes well over 16 minutes to run (still has not finished this run) with 100,000 to 110,000 records.
>>
>>I thought maybe getting rid of scans might help, but I wanted to ask you, UT members, first. :)
>>
>>Thanks,
>>Beth
>
>I don't think there's an SQL option to update the cursors since UPDATE FROM is not in VFP 8.
>
>But 16 minutes seems excessive for that many records. When I have this sort of situation I would usually do something like
>
>SELECT mnCursor
>INDEX ON expression TAG temp
>SELECT fstCursor
>SET RELATION TO expression INTO mnCursor
>REPLACE ALL field WITH fstCusor.field...... FOR FOUND('fstCusror')
>
>Can something like that be adapted to your situation?
Okay, I tried to adapt this to my situation, and this is what I came up with:
SELECT srvcid, UBILLDESC, stdntid, SUM(wrkRealCost) AS wrkRealCost, ;
  C1, C4 ;
  FROM BL731 WHERE wrkStatus<>ACTIVE ;
  GROUP BY srvcid, C1, C4, UBILLDESC , stdntid ;
  INTO CURSOR BL

SELECT BL731
INDEX ON srvcid + UBILLDESC + BINTOC(stdntid) + STR(C1) + STR(C4) TAG mainmix
SELECT BL
SET RELATION TO srvcid + UBILLDESC + BINTOC(stdntid) + STR(C1) + STR(C4) INTO BL731 IN BL

REPLACE wrkAdjust WITH BL.wrkRealCost  ;
  , wrkRealCost WITH BL731.wrkRealCost + BL.wrkRealCost ;
  ALL FOR FOUND('bl') IN BL731

USE IN "BL"
and I get no records updated correctly. :(
did I miss something in the relation, or setting up the replace command?
C1 and C4 numerical amounts that represent money.

Thanks for you help,
Beth
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform