[gelöst] FINDSET(TRUE, TRUE)

18. Februar 2009 11:54

Hallo!

Eine FINDSET(TRUE,TRUE) Schleife sollte nach meinem Kenntnisstand durchlaufen werden, auch wenn die Schlüssel verändert werden auf welchem die Schleife läuft.

Das scheint aber nicht zu funktionieren (als Workaround mache ich das Modify auf einer Kopie des Datensatzes).

Hat jemand Erfahrungswerte mit dieser Problemstellung?

Kleines Codebeispiel...
Code:
SETRANGE(SK,FALSE);
IF FINDSET(TRUE,TRUE) THEN
  REPEAT
    IF Speziallfall THEN BEGIN
      SK := TRUE;
      MODIFY;
    END;
  UNTIL NEXT = 0;
Zuletzt geändert von ralfescher am 18. Februar 2009 15:24, insgesamt 2-mal geändert.

Re: FINDSET(TRUE, TRUE)

18. Februar 2009 12:20

Hallo,

das ist so. Wenn man Felder ändert, die innerhalb des gewählten Schlüssels liegen, passt die Sortierung nicht mehr. Deshalb das Update immer auf einer 2. Recordvariablen durchführen.
Die Onlinehilfe spricht auch nur von einer optimierten Verarbeitung und verwendet im aufgeführten Beispiel auch eine 2. Recordvariable.

Re: FINDSET(TRUE, TRUE)

18. Februar 2009 12:33

Habe die gleiche Erfahrung gemacht wie du und gehe auch genauso damit um.