SELECT Cursor1 SCAN REPLACE Field2 WITH LOOKUP(RCursor.Field2, Cursor1.Field1, RCursor.Field1) ENDSCANOf course, you'd want to perform that operation only if you can lock each record to ensure the update takes place.
>>CREATE CURSOR Cursor1 ( Field1 c(10), Field2 c(10)) >>INSERT INTO Cursor1 VALUES ('001', '') >>INSERT INTO Cursor1 VALUES ('002', '') >>INSERT INTO Cursor1 VALUES ('003', '') >>INSERT INTO Cursor1 VALUES ('004', '') >>INSERT INTO Cursor1 VALUES ('005', '') >> >>CREATE CURSOR RCursor ( Field1 c(10), Field2 c(10)) >>INSERT INTO RCursor VALUES ('001', 'AAA') >>INSERT INTO RCursor VALUES ('002', 'BBB') >>*INSERT INTO RCursor VALUES ('003', '') >>INSERT INTO RCursor VALUES ('004', 'DDD') >>INSERT INTO RCursor VALUES ('005', 'EEE') >> >>SELECT Cursor1 >><b>REPLACE ALL Field2 WITH LOOKUP(RCursor.Field2, Cursor1.Field1, RCursor.Field1)</b> >>>>
>>>>UPDATE Cursor1 ; >>>> SET Field1=Field1 ; >>>> WHERE Field1 in (select field1 from RCursor)>>>>It appears to do what you need and that is update all records in Cursor1 with a matching record in RCursor. Unless you are running an internal function that updates something in RCursor during the Update statement, I don't think you need it.
>>>>>CREATE CURSOR Cursor1 ( Field1 c(10) ) >>>>>INSERT INTO Cursor1 VALUES ('HLADU' ) >>>>>INSERT INTO Cursor1 VALUES ('POOD') >>>>> >>>>>CREATE CURSOR RCursor ( Field1 c(10) ) >>>>>INSERT INTO RCursor VALUES ( 'HLADU' ) >>>>>INDEX ON Field1 TAG T >>>>> >>>>>SELECT Cursor1 >>>>>SET RELA TO Field1 INTO RCursor >>>>> >>>>>UPDATE Cursor1 ; >>>>> SET Field1=Field1 ; >>>>> WHERE !EOF('RCursor') AND ; >>>>> Field1 IN (SELECT Field1 FROM RCursor ) >>>>>* Result: 0 >>>>>* Expected result: 1 >>>>>messagebox( STR(_TALLY) ) >>>>>