Wenn man im Navision prüfen will ob beispielsweise nur genau ein Datensatz auf den Filterausdruck passt. Schreibt man das oft so:
SETCURRENTKEY(Field); SETFILTER(Field,Filter); IF COUNT = 1 THEN BEGIN // Do something END ELSE BEGIN // Do something else END;
Wenn tatsächlich nur ein Datensatz in der Menge liegt ist dieser Ausdruck auch schon optimal und gut lesbar. Wenn jedoch viele Datensätze in der Menge liegen bekommt man schnell ein Performance-Problem. Mit dem folgenden Trick kann man das relativ einfach umgehen:
SETCURRENTKEY(Field); SETFILTER(Field,Filter); IF FIND('-') AND NEXT = 0 THEN BEGIN FIND('-'); // Do something END ELSE BEGIN // Do something else END;
Man macht zwar an der Stelle 2 Find’s und 1 Next, aber wenn die Datenmenge groß ist, dann macht das einen enormen Unterschied.
Das ist sicher richtig, doch manchmal braucht man die tatsächliche Anzahl der Datensätze (z.B. für eine Fortschrittsanzeige), dann kommt man um ein count nicht herum.
Comment by vanilla-flavour — Monday, 25. September 2006 um 14:11 Uhr
Ja da hast du Recht.
Aber das ist ja meistens nur die äußere Schleife. Wenn du tief in irgendwelchen Berechnungsfunktionen steckst brauchst du jedoch oftmals nur eine Aussage in der Art: “0, 1 oder viele Datensätze”.
Comment by Steffen Forkmann — Monday, 25. September 2006 um 14:20 Uhr
In dem Fall bin ich bei Dir.
Comment by vanilla-flavour — Monday, 25. September 2006 um 14:32 Uhr