Abfragekriterium über Formularfeld eingeben

Hallo,
ich möchte das Abfragekriterium über ein Formularfeld steuern und habe folgendes Problem:
Ich habe ein Formular frmTest in dem habe ich ein Textfeld, das ich mit Suchstring benannt habe.

In einer Abfrage habe ich im Kriterienfeld folgendes eingegeben:
[forms]![frmTest]![Suchstring], habe es auch mit [Formulare]![frmTest]![Suchstring] versucht.

Gebe ich im Formular z.B. 25 ein, dann arbeitet die Abfrage richtig und es werden Datensätze angezeigt.

Gebe ich aber z.B. IN(25;35) wird nicht ein Datensatz angezeigt, d.h. er versteht bei Schlüsselwörter wie IN oder ZWISCHEN nicht den Inhalt des Textfeldes.

Schreibe ich direkt IN(25;35) in das Kriterienfeld, funktioniert die Abfrage wunderbar.

Hat jemand einen Tipp was hier schief läuft?

Vielen Dank

Marcus

Hallo.

Gebe ich aber z.B. IN(25;35) wird nicht ein Datensatz
angezeigt, d.h. er versteht bei Schlüsselwörter wie IN oder
ZWISCHEN nicht den Inhalt des Textfeldes.

Du übergibst einen String. Der wird nicht interpretiert, sondern 1:1 geelesen. Woher soll das arme Access wissen, dass Du in dem String noch einen Befehl versteckst? Da müsstest Du so einiges an Intelligenz in das Kriterienfeld einbauen, was nicht nur aufwendig, sondern fast unwartbar und vermutlich auch nicht allzu schnell wäre.

Gruß Eillicht zu Vensre

Hallo Marcus,

In einer Abfrage habe ich im Kriterienfeld folgendes
eingegeben:
[forms]![frmTest]![Suchstring], habe es auch mit
[Formulare]![frmTest]![Suchstring] versucht.

Gebe ich im Formular z.B. 25 ein, dann arbeitet die Abfrage
richtig und es werden Datensätze angezeigt.

logisch, du übergibst einen Wert der dann ausgewertet wird.

Gebe ich aber z.B. IN(25;35) wird nicht ein Datensatz
angezeigt, d.h. er versteht bei Schlüsselwörter wie IN oder
ZWISCHEN nicht den Inhalt des Textfeldes.

richtig, das sind Funktionen die dann nicht ausgewertet werden wie einfache Werte.

Schreibe ich direkt IN(25;35) in das Kriterienfeld,
funktioniert die Abfrage wunderbar.

logisch, da dann die Funktion evaluiert wird.

Hat jemand einen Tipp was hier schief läuft?

du kannst keine Funktionen einfach als Variable übergeben.

Verwende die Funktion EVAL um Funktionen in Variablen zu evaluieren.
Nachteil: diese Vorgehensweise ist bei Abfragen sehr langsam!

Beispiel: eval([Suchstring])
wobei Suchstring = „IN(25;36)“

da wäre ggf. eine einfache Lösung sinnvoller:

Kriterium: IN([Suchstring])

Grüße aus Essen
Wolfgang

da wäre ggf. eine einfache Lösung sinnvoller:

Kriterium: IN([Suchstring])

Grüße aus Essen
Wolfgang

Hallo Wolfgang,

Deine Lösung Kriterium: IN([Suchstring]) verstehe ich nicht ganz. Was steht im Formularfeld und was steht in der Abfrage.

Vielen Dank für Deine Hilfe!

Gruß

Marcus

Hallo Marcus,

Deine Lösung Kriterium: IN([Suchstring]) verstehe ich nicht
ganz. Was steht im Formularfeld und was steht in der Abfrage.

in der Abfrage findest du links das Wort Kriterium
in die Zeile kommt dann IN()
zwischen den Klammern die Variable, die deine Suchkriterien enthält.

so dass z.B. immer IN(„5“) oder IN(„5;8“) usw. ausgewertet wird.

D.h. es wird IMMER diese Funktion für die Auswertung genommen. Ein Wechsel zu z.B. „zwischen“ ist dann nicht möglich, es sei denn, du verbindest beides mit OR = nächste Zeile.

Das hat aber den Nachteil, dass du dort wieder zwei zusätzliche Variablen benötigst.

Vielleicht kannst du das ja im Formular steuern und einfach zwei unterschiedliche Abfragen aufrufen?

Grüße aus Essen
Wolfgang