22. September 2010 11:59
WITH Customer DO BEGIN
RESET;
SETCURRENTKEY("No.");
IF FINDSET THEN BEGIN
REPEAT
Feldwert := FALSE;
IF Prüfung("No.") THEN
Feldwert := TRUE;
MODIFY;
UNTIL NEXT = 0;
END;
END;
WITH Customer DO
REPEAT
Feldwert := FALSE;
IF Prüfung("No.") THEN
Feldwert := TRUE;
MODIFY;
UNTIL NEXT = 0;
22. September 2010 12:07
22. September 2010 12:14
Onlinehilfe hat geschrieben:The general rules for using FINDSET are:
• FINDSET(FALSE,FALSE)- read-only. This uses no server cursors and the record set is read with a single server call.
• FINDSET(TRUE,FALSE)- is used to update non-key fields. This uses a cursor with a fetch buffer similar to FIND(‘-’).
• FINDSET(TRUE,TRUE)- is used to update key fields.
Note
This function is designed to optimize finding and updating sets. If you set any or both of the parameters to FALSE, you can still modify the records in the set but these updates will not be performed optimally.
22. September 2010 12:22
IF FINDSET THEN
REPEAT
...
REPEAT
...
22. September 2010 12:30
22. September 2010 12:34
ralf5 hat geschrieben:Danke schon mal für die Antworten.
Nochmal Explicit die Frage:
Brauche Ich
- Code:
IF FINDSET THEN
REPEAT
...
Oder langt auch einfach nur
- Code:
REPEAT
...
Ich bekomme bei beiden Varianten das selbe Ergebnis.
Gruß
Ralf
22. September 2010 14:11
Lord_British hat geschrieben:Edit: wenn das IF FIND THEN nicht verwendet wird, dann gibt es einen Laufzeitfehler:
22. September 2010 14:18
22. September 2010 14:34
fiddi hat geschrieben:Denkfehler meinerseits
Wenn du die REPEAT-Schleife ohne ein FIND??? aufrufst, ist beim ersten Durchlauf normalerweise die Record- Variable nicht gefüllt (kommt auf den vorherigen Code an). Wenn du einen Record änderst, den du noch nicht gelesen hast, gibt es normalerweise eine Fehlermeldung.
Gruß, Fiddi
REPEAT
x += 1;
Customer."Name 2" := 'HALLO';
Customer.MODIFY;
Customer.NEXT;
UNTIL x = 3;
22. September 2010 14:57
22. September 2010 15:04
22. September 2010 15:13
22. September 2010 15:26