Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Der Wert eines Textfeldes auf einem Formular als Kriterium einer Abfrage

Begonnen von Janosch, Januar 23, 2020, 21:36:12

⏪ vorheriges - nächstes ⏩

Janosch

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!

DF6GL

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
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Janosch

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. :)