Eine Abfrage hat die Spalte "CHAN", die die Werte a,b,c,d,e enthält.
Mein Formular hat 5 Knöpfe/Befehlsschaltflächen die jeweils a,b,c,d oder e heißen.
Ich möchte, dass die Abfrage bei Knopfdruck jeweils nach dem Knopfnamen gefiltert wird.
Das habe ich ausprobiert:
1. Im Entwurfsmodus der Abfrage habe ich bei "Kriterien" das eingetragen:
Formulare![frmHauptformular].Beschriftung
Ich hatte gehofft, dass die Beschriftung des jeweiligen Knopfs beim Klicken weitergegeben und als Filterkriterium gesetzt würde. Leider bleibt die Abfrage dann leer. Geht das so gar nicht oder habe ich nur einen Fehler gemacht?
2. per vba
Private Sub Knopfa_Click()
On Error GoTo Err_Knopfa_Click
Dim stDocName As String
stDocName = "qry_Bestände ohne Orderbook gefiltert"
DoCmd.OpenQuery stDocName, acNormal, acEdit
DoCmd.ApplyFilter , "CHAN = 'a'"
Exit_Knopfa_Click:
Exit Sub
Err_Knopfa_Click:
MsgBox Err.Description
Resume Exit_Knopfa_Click
End Sub
Das funktioniert nur dilettantisch. Zuerst wird die Abfrage komplett angezeigt und ein paar Milisekunden später wird gefiltert.
Ich habe nun schon sehr lange gegoogelt, aber leider keinen guten Treffer gelandet.
Wie kann ich das umsetzen? kann ich da eine WHERE einbauen? In SQL ist das sehr einfach, vba ist leider Neuland für mich, sodass ich nicht weiß wie ich ein WHERE statement einbauen kann. Aber vielleicht gibt es einen ganz anderen Standard für diesen, wie ich vermute, Standardfilter ???
Ich hoffe ihr könnt mir weiterhelfen.
Hallo,
Zitatkann ich da eine WHERE einbauen?
Jou, kannst du!
Private Sub Knopfa_Click()
Dim strKnopf As String
strKnopf = Me.a.Caption
'Zuweisen der neuen SQL an die Abfrage
CurrentDB.Querydefs("qry_Bestände ohne Orderbook gefiltert").SQL = "SELECT * FROM DeineTabelle WHERE CHAN='" & strKnopf & "'"
DoCmd.OpenQuery "qry_Bestände ohne Orderbook gefiltert"
End Sub
Voraussetzung ist in obigem Fall dass die Beschriftung des Buttons 'a' lautet.
Sollte die Beschriftung anders lauten und du willst den Namen des Button als Kriterium verwenden dann:
strKnopf = Me.DeinButton.NameWeiter würde ich dir empfehlen die Benamsung der Datenbankobjekte zu überdenken - Leerzeichen und Sonderzeichen machen irgendwann mal Probleme.
Besser wäre 'qry_BestaendeOhneOrderbookGefiltert'
HTH
Funktioniert super, danke! :)