Abfrage wenn-dann-sonst (Acc03)

Hallo zusammen,

ich habe da ein Problem mit einer Abfrage bzw. mit den Kriterien in Access 2003.
Folgende Kriterien sollen zum Ergebnis führen:

WENN([Wert1 aus Formular]="";[Wert1 aus Tabelle];ZWISCHEN [Wert1 aus Tabelle] UND [Wert2 aus Tabelle])

…soll heißen:
Wenn im zugrunde liegenden Formular KEINE Werte eingetragen sind, dann soll das Kriterium ignoriert und der Wert aus der Tabelle herangezogen werden. Ansonsten sollen alle Werte herausgefiltert werden, die zwischen dem (Formular)Wert1 und dem (Formular)Wert2 liegen.

Wenn ich nur den dritten Teil als Kriterium angebe (es müssen dann natürlich im Formular Werte eingetragen sein), dann funktioniert es einwandfrei. In der Wenn-dann-sonst-Verschachtelung macht mir aber das ZWISCHEN-UND Probleme - sprich es will nicht laufen. Ich erhalte die Meldung, dass der Ausdruck falsch oder zu komplex ist, um ausgewertet zu werden…
Was mache ich falsch? Fehlen vielleicht Anführungszeichen oder so?
Hat jemand eine Idee?
Vielen Dank.

Gruß
Uli

Hallo,

WENN([Wert1 aus Formular]="";[Wert1 aus Tabelle];ZWISCHEN
[Wert1 aus Tabelle] UND [Wert2 aus Tabelle])

kann so nicht gehen. Die Wenn-Funktion liefert Werte zurück und keine SQL-Fragmente mit Operatoren

…soll heißen:
Wenn im zugrunde liegenden Formular KEINE Werte eingetragen
sind, dann soll das Kriterium ignoriert und der Wert aus der
Tabelle herangezogen werden.

Du meinst: alle Datensätze aus der Tabelle ?

Ansonsten sollen alle Werte
herausgefiltert werden, die zwischen dem (Formular)Wert1 und
dem (Formular)Wert2 liegen.

Versuch mal im Kriteriumsfeld des entspr. Feldes

Zwischen Forms!Formular1!Wert1 und nz(Forms!Formular1!Wert2;Forms!Formular1!Wert1 ) oder Forms!Formular1!Wert1 ist Null

Allgemein rate ich von solchen Formularverweisen in Abfragekriterien ab.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!

Vielen Dank Franz,

ich habe das sofort ausprobiert und es hat funktioniert, allerdings nur bedingt. Wenn ich das Kriterium in einem weiteren Feld anwende, erhalte ich wieder die selbe Meldung.
Ich versuche mein Problem nochmal kurz zu erläutern.
Ich habe ein Formular erstellt, in dem alle Felder der Haupttabelle enthalten sind - allerdings ohne Steuerelementinhalt. In dieses Formular kann nun der Anwender alle Werte vorgeben nach denen gesucht werden soll. Sind alle Werte vorgegeben, wird dem Hauptformular als Datenherkunft die Abfrage zugrunde gelegt (Recordsource).
Bei den meisten Feldern wird nur ein gezielter Wert abgefragt.
Hier lautet das Kriterium:

WIE „*“ & [Formulare]![Abfrageformular]![Feld] & „*“

Nun gibt es aber ein paar Felder, wo ich einen Bereich suchen lassen will - wie in meinem geschilderten Problem.
Z.B. gibt es in der Tabelle die Felder „von_km“ und „bis_km“.
Im Abfrageformular habe ich zwei Felder für die Vorgabe des km-Bereiches angelegt.
In der Abfrage muß ich dann erstens prüfen, ob überhaupt ein Wert vorgegeben wurde. Wenn ja, muss als Ergebnis der Wert der Felder „von_km“ und „bis_km“ im Bereich der beiden Vorgabewerte liegen, also „von_km“ muss >= dem Vorgabewert „von_km“ und zugleich

Hallo,

naja, die Bereich-Suche nach wiederum einen Bereich, der durch zwei unabhängige Tabellenfelder bestimmt wird, gestaltet sich eh etwas schwierig.

Vielleicht hilft Dir der „Formularbasierte Filter“ schon man auf die Schnelle weiter.

Ansonsten würde ich den SQL-String für das Form per VBA dynamisch zusammenbauen. Such mal bei www.dbwiki.de unter Datenbanken nach Suchen oder auch Suchen-Popup-Formular, bzw. Ähnlichem.

Viele Grüße vom Bodensee
Franz , DF6GL

PS: Feedback erwünscht!