Hallo, Wolfgang.
Filterausdrücke werden mit jeder Navigation in der Tabelle evaluiert. Ist die Tabelle selbst Bestandteil des Filterausdrucks, verändert der sich dann auch inhaltlich. Ich nehme an, Du willst alle anderen Kunden holen, die eine gleiche Eigenschaft wie der aktuelle Kunde haben. Da gibt es dann nur den Weg, diese Eigenschaft irgendwie wegzuspeichern und auf die Speicherung zuzugreifen, sonst ändert sich die abgefragte Eigenschaft mit jeder Navigation (und man bekommt letztlich alle Datensätze als Antwort). Das geht entweder über eine Variable oder so:
Hier wird "matchcode" auch nur ein einziges Mal angefasst, wie beim Umkopieren in eine Variable. Der Nachteil besteht darin, dass jetzt der Makroexpander mit jeder Navigation zuschlagen muss, was Zeit kosten kann. Aber solche Mechanismen sind ganz elegant, wenn man extrem flexibel arbeiten will. Letztlich setzt man SELECT-Statements auch auf diese Weise zusammen. Man kann das noch etwas weiter treiben und mit detached LOCALs und der Funktion DbSetFilter arbeiten, dann holt man den Zeitverlust möglicherweise wieder rein. Bei sehr überschaubaren Tabellen ist der aber kaum messbar.