Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Janosch am Januar 23, 2020, 21:36:12

Titel: Der Wert eines Textfeldes auf einem Formular als Kriterium einer Abfrage
Beitrag von: Janosch am Januar 23, 2020, 21:36:12
Hallo Forenmitglieder!
Ich habe auf einem Formular eine Optionsgruppe erstellt. Die gewählte Option schreibt den Wert in ein Textfeld auf dem Formular.
Ich habe daneben einen Button der folgen den Code ausführt:
Private Sub meinFilter_Click()
    Dim filterPilot As String, Filter As String
    Select Case fra_Pilot.Value 'Die Optionsgruppe.
    Case 1:
        filterPilot = "IST NICHT NULL" 'Zeige alle Datensätze an.
    Case 2:
        filterPilot = "Buchbar" 'Zeige nur Buchbare Datensätze an.
    Case 3:
        filterPilot = "<>""Buchbar""" 'Zeige nur Datensätze die einem Piloten zugewiesen sind. In der Tabelle stehen deren Name.
    End Select
    Pilot_Helper.Value = filterPilot 'schreibe filterPilot in Textfeld das als Kriterium der Abfrage dient
    DoCmd.OpenReport "rpt_FG_Auftragsuebersicht_gefiltert", acViewReport
End Sub


In der Abfrage steht als Kriterium:

[Formulare]![eXr_Planung]![Pilot_Helper]

Was nicht funtioniert ist Option 1 und 3, da bekomme ich einen leeren Bericht. Was mache ich beim Ausquoten falsch?

Danke für Lesen!
Grüße,
Jan!
Titel: Re: Der Wert eines Textfeldes auf einem Formular als Kriterium einer Abfrage
Beitrag von: DF6GL am Januar 23, 2020, 21:49:57
Hallo,

man kann nur Werte und keine Operatoren in einem Textfeld verwenden, das in einer Abfrage in einer Spalte als Kriterium dient.

Entferne den Kriterium-Parameter aus der Abfrage und nutze solchen Code:

ZitatPrivate Sub meinFilter_Click()
    Dim filterPilot As String, Filter As String
    Select Case fra_Pilot.Value 'Die Optionsgruppe.
    Case 1:
        filterPilot = "[DeinAbfrageFeld] IST NICHT NULL" 'Zeigt alle Datensätze , die nicht Leer (NULL) sind
    Case 2:
        filterPilot = "[DeinAbfrageFeld] = 'Buchbar'"   ' wenn darin tatsächlich ein Text steht.
    Case 3:
        filterPilot = "[DeinAbfrageFeld] <> 'Buchbar'"  'Zeige nur Datensätze die nicht buchbar sind. einem Piloten zugewiesen sind. In der Tabelle stehen deren Name.  ??
    End Select
    Pilot_Helper.Value = filterPilot 'schreibe filterPilot in Textfeld das als Kriterium der Abfrage dient
    DoCmd.OpenReport "rpt_FG_Auftragsuebersicht_gefiltert", acViewReport,, filterPilot
End Sub
Titel: Re: Der Wert eines Textfeldes auf einem Formular als Kriterium einer Abfrage
Beitrag von: Janosch am Januar 24, 2020, 11:07:26
Klappt perfekt und habe weitere Optionsfelder hinzugefügt!
Fertig sieht es jetzt so aus:
Private Sub meinFilter_Click()
On Error GoTo Fehler
    Dim filterPilot As String, filterStatus As String, filterJob_ID As String, filterGesamt As String
    Select Case fra_Pilot.Value 'Die Optionsgruppe.
    Case 1:
        filterPilot = "[Pilot] <> 'IST NULL'" 'Zeige alle Datensätze an.
    Case 2:
        filterPilot = "[Pilot] = 'Buchbar'" 'Zeige nur Buchbare Datensätze an.
    Case 3:
        filterPilot = "[Pilot] <> 'Buchbar'" 'Zeige nur Datensätze die Piloten zugewiesen sind.
    End Select
    Select Case fra_Status.Value
    Case 1:
        filterStatus = "[Status] <> 'IST NULL'"
    Case 2:
        filterStatus = "[Status] <> 'Bereit zum Abflug'"
    Case 3:
        filterStatus = "[Status] = 'Bereit zum Abflug'"
    End Select
    Select Case fra_Job_ID.Value
    Case 1:
        filterJob_ID = "[Job_Test] <> 'IST NULL'"
    Case 2:
        filterJob_ID = "[Job_Test] <> 'Börse'"
    Case 3:
        filterJob_ID = "[Job_Test] = 'Börse'"
    End Select
    filterGesamt = filterPilot & " AND " & filterStatus & " AND " & filterJob_ID
    DoCmd.OpenReport "rpt_FG_Auftragsuebersicht_gefiltert", acViewReport, , filterGesamt
Exit Sub
Fehler:
    MsgBox "Wonach soll ich filtern?", vbQuestion, "Die Glaskugel fragt:"
End Sub


Danke!
PS: Wenn ich jetzt noch den Button für "Thema gelöst" finde. :)