Access 97

Hallo,

ich mache eine einfache Abfrage auf eine einzelne Tabelle.
Das Auswahlkriterium hole ich mir aus einem Formular.
Ich trage also unter Kriterium z.B. [forms]![Suchen]![Thema] ein.
Ich trage also in das Formular „SUCHEN“ in das Feld „THEMA“ was ein, und finde das dann über meine Auswahlabfrage in der entspr. Tabelle. Das setzt aber vorraus, daß ich das Thema exakt so eintrage, wie es in der Tabelle steht.
Wie muß der Ausdruck in Kriterien lauten, damit ich auch nur Teile des Themas eingeben kann ?
*[forms]![Suchen]![Thema]* vielleicht ? geht aber nicht !!

Gruß, Ray

Nimm mal:

Wie [forms]![Suchen]![Thema]& „*“

Besser ist es aber, auf Formularbezüge in Abfragen zu verzichten und Kriterien bzw. SQL dynamisch zu erstellen.

Reinhard

Nimm mal:

Wie [forms]![Suchen]![Thema]& „*“

Besser ist es aber, auf Formularbezüge in Abfragen zu
verzichten und Kriterien bzw. SQL dynamisch zu erstellen.

Wie geht das (dynamische) denn?
Sowol in den Kriterien als auch in SQL?

Jan

Das geht dann etwa so:

Dim Krit, SQL
Krit = ""
If Not Isnull(Me!Textfeld) then Krit = Krit & " AND Textfeld LIKE '" & Me!Textfeld & "'"
If Not Isnull(Me!Zahlenfeld) then Krit = Krit & " AND Zahlenfeld" = Str(Zahlenfeld)
'usw.
If Krit "" then Krit = " WHERE " & Mid(Krit, 5)
SQL = "SELECT \* FROM MeineTabelle" & Krit
CurrentDB.Querydefs("MeineAbfrage").SQL = SQL
' oder auch:
Me!MeinUFO.Form.Recordsource = SQL
' oder wie auch immer...

Die Vorteile sind:

  • Man bekommt eine saubere und lesbare SQL ohne fehlende Werte
  • Man kann Plausibilitätsprüfungen einbauen
  • Man bekommt Fehlermeldungen, wenn etwas nicht stimmt
  • Man kann einen vernünftigen Benutzerdialog gestalten
  • Man kann sauber auf Nullwerte in Suchfeldern reagieren (ohne Krüppelkonstrukte wie „OR IS NULL“ in jedem Feld)
  • Man kann Wildcards richtig einbauen und Feldtypen berücksichtigen
  • Man vermeidet Formularbezüge in Abfragen und die damit verbundenen Nachteile (Änderungsunfreundlichkeit, Unzugänglichkeit usw.).
  • Man erstellt portable SQL (SQL mit Formularbezügen verhindert die Ausführbarkeit auf einem Server)
    usw. usw.

Reinhard