PDA

Vollständige Version anzeigen : Abfragekriterium aus Formular setzen


Schnuffi
25.01.2001, 18:42
Ich habe folgendes Problem:
Ich will die Kriterien in einer Abfrage mit Werten aus einem Formular bilden. Dazu habe ich bisher in der Abfrage formuliert:
Wie [Formulare]![Suchformular]![Wert].
Das klappt auch so wie ich mir das vorstelle.
Um aber flexibler zu sein, möchte ich die Wahl haben zwischen "Wie" und "Nicht Wie", das heißt ich möchte das "Wie" nicht von Hand in die Abfrage schreiben, sondern auch aus dem Formular entnehemn. Bisher sind alle Versuche wie [Formulare]!Sucheformular]![Wert1] & [Formulare]![Suchformular]![Wert] fehlgeschlagen. Wer kann mir hier helfen?

Wolfgang
25.01.2001, 19:04
Hallo Schnuffi,

ich nehme an, dass die Abfrage an das Formular gebunden ist. Am einfachsten ist es, 2 Abfragen zu erstellen, einmal wie... und einmal nicht wie... An eine Optionsschaltfläche wird folgender Code nach Aktualisierung eingefügt.
If me!Optionsschaltfläche = 1 then Me.RecordSource = "Abfr1"
else
Me.RecordSource = "Abfr2"
End if

Hilfe zur RecordSource Eigenschaft findest Du, wenn Du in der Eigenschaftsanzeige
Datenherkunft anklickst und F1 drückst.

Grüße
Wolfgang

Schnuffi
26.01.2001, 06:29
Hallo Wofgang,
vielen Dank für die Antwort.
Mit zwei Abfragen kann ich es aber leider nicht machen, da in dem Formular 10 Felder für die Abfrage sind und der Wert für "Wie" oder "Nicht Wie" jeweils wahlfreifür jedes einzelne Feld setzbar sein soll. Ich kann also den Wert nicht vorher in der Abfrage festlegen (leider)
Gruß
Schnuffi

Wolfgang
27.01.2001, 16:07
Hallo Schnuffi,

es besteht noch die Möglichkeit, eine Abfrage über Code selbst zu erstellen. Nachfolgend ein Beispiel, bei 10 Auswahlmöglichkeiten wird das genze natürlich etwas komplexer.

Dim lRec As String
Application.Echo False
lRec = ""
Dim lRs As String, lDB As DATABASE, lQry As QueryDef
Set lDB = CurrentDB
Dim lRowsource As String

lRs = ""

DoCmd.SetWarnings False
DoCmd.DeleteObject acQuery, "Abfr_Frm_Einrichtungen"

lRs = "SELECT DISTINCTROW Tab_Anschrift.*, Tab_Einrichtung.*, Tab_Träger.* FROM Tab_Träger LEFT JOIN "
lRs = lRs & "(Tab_Anschrift RIGHT JOIN Tab_Einrichtung ON Tab_Anschrift.AnschriftenNr = "
lRs = lRs & "Tab_Einrichtung.AnschriftenNr) ON Tab_Träger.AnschriftenNr = Tab_Einrichtung."

If Me![KK_AllePflegesätze] = False Then
lRs = lRs & "AnschriftenNr ORDER BY Tab_Einrichtung.Dateiname, Tab_Einrichtung.HilfebedarfsNr;"
End If
If Me![KK_AllePflegesätze] = True Then
lRs = lRs & "AnschriftenNr WHERE (((Tab_Einrichtung.Status) > 1)) ORDER BY Tab_Einrichtung.Dateiname, Tab_Einrichtung.HilfebedarfsNr;"
End If
Set lQry = lDB.CreateQueryDef("Abfr_Frm_Einrichtungen", lRs)

Schnuffi
28.01.2001, 08:44
Hallo Wolfgang,

ich werde mal versuchen, ob ich so weiter komme. Wird aber sicher was dauern, da ich in VBA nur rudimentäre Kenntnisse habe. Aber Weiterbildung schadet ja nie. Auf alle Fälle vielen Dank

Gruß Schnuffi