Hallo!
schrieb Louis Noser:
> schrieb Karl Donaubauer:
>
>> Wenn man einen Alias (hier SollKtoNr) in einer berechneten Spalte in
>> der WHERE-Klausel verwendet, wird er immer als Parameter betrachtet .
>> Du müsstest daher auch für "HabenKtoNr" ein Parameterfenster bekommen.
>
> Das ist so.
>
>> Deine andere Variante funktioniert, weil du dort die Kriterien nicht
>> mehr auf berechnete Spalten anwendest, sondern direkt auf die Felder.
>
> Wenn ich recht verstehe, funktionieren also Kriterien auf berechnete
> Spalten nicht bzw. nie.
Nein. Kriterien auf berechnete Spalten funktionieren schon. Du könntest
z.B. in deiner neuen, funktionierenden Variante (mit Kriterium direkt
auf das Feld) auch wieder Links(Feldname; 1) und "3 oder 4" als
Kriterium verwenden.
Was nicht funktioniert, ist ein Kriterium auf eine berechnete Spalte,
wenn in dieser berechneten Spalte ein Alias vorkommt. Am konkreten Beispiel:
Du hattest zuerst "SollKtoNr" als Alias im SELECT festgelegt und ihn
danach in der berechneten Spalte "Sollklasse" verwendet. Das geht noch.
Sobald du aber ein Kriterium auf diese Spalte anwendest, d.h. wenn die
Sache im SQL-WHERE-Abschnitt vorkommt, kann Access diesen
weiterverwendeten Alias nicht mehr auflösen und fragt nach. Das ist eine
Beschränkung der Datenbankengine ACE.
>> Die LIKE-Variante mit Asterisk hintennach ist eh besser, weil sie
>> einen evtl. vorhandenen Index am Feld verwenden kann.
>
> Ich nehme an, das heisst, dass die Ausführung - hier von Like - mit
> Index schneller vonstatten geht als ohne.
Ja, wenn es einen entsprechenden Index gibt und wenn der * hinten steht,
nicht vorne. Sonst müssen wieder alle Datensätze durchsucht werden, wie
es bei einer berechneten Spalte mit Left() auf jeden Fall passiert.