Neuigkeiten:

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

Mobiles Hauptmenü

Formular filtern per Befehlsschaltfläche

Begonnen von ironpete, Januar 08, 2013, 11:24:02

⏪ vorheriges - nächstes ⏩

ironpete

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.


database

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.Name

Weiter würde ich dir empfehlen die Benamsung der Datenbankobjekte zu überdenken - Leerzeichen und Sonderzeichen machen irgendwann mal Probleme.

Besser wäre 'qry_BestaendeOhneOrderbookGefiltert'

HTH

ironpete