ForEach(Row) versus programmierter Schleifendurchlauf

Wann verwendet man ForEach(Row) und wann ist es besser, in einem Skript z.B. mit einer FOR EACH … NEXT-Schleife zu arbeiten?

  • Gefällt
Antwort

Im DirectDesk aktualisiert ForEach() abhängige DVs automatisch,  der Cursor auf jedem Datensatz läuft sichtbar mit bzw. signalisiert den Fortschritt über den vertikalen Scrollbalken.
Das ähnliche ForEachRow() im Generierten aktualisiert diese dagegen nicht.
Deswegen und weil sie nur die im Speicher liegenden Daten abarbeitet, ist die  Schleife im Skript schneller, wenn man die Aktualisierung nicht braucht. Bei Bedarf ist die Aktualisierung dennoch mit einem zwischengeschalteten DVx.Refresh() erzielbar. Wenn man sich erinnert, dass der Cursor in einer frisch geöffneten Tabelle wie auch in jedem neu selektieren DV defaultmäßig stets auf dem ersten Datensatz steht, kann man mit entsprechender Sortiereinstellung so zielgerichtet z.B. Dubletten eliminieren usw.

  • Gefällt
Antwort
Abbruch