Versiedene Abfragen für ein Listenfeld (Access)

Neuling001, Mittwoch, 02.09.2020, 22:39 (vor 29 Tagen)
bearbeitet von Martin Asal, Samstag, 05.09.2020, 14:43

Ich finde in der VBA-Hilfe keine Lösung, daher wende ich mich schon wieder an Euch:
Ich habe eine Listbox in der Kundendaten aufgelsitet werden (Name, Adresse,...)
Nun wollte ich per Kombinationsfeld die Abfrage der Kundendaten derart steuern, dass entweder alle Kunden, Kunden die Aktiv und Kunden die auf Deaktiv gesetzt wurden, angezeigt werden.
Folgendes Listing habe ich erstellt, nur wie fülle ich die Liste

Private Sub cmbKndSelect_AfterUpdate()
  Dim SQLStr As String
 
  Select Case Me.cmbKndSelect.Column(0)
    Case 1
      SQLStr = " SELECT tblKndDaten.PatID, tblKndDaten.PatZuname, tblKndDaten.PatVorname, tblKndDaten.PatGebDat, tblKndDaten.PatSozVersNr, tblKndDaten.PatTelefon, tblKndDaten.PatMobil " & _
      " FROM tblKndDaten " & _
      " WHERE (((tblKndDaten.PatAktiv)=True))" & _
      " ORDER BY tblKndDaten.[PatZuname]"
    Case 2
      SQLStr = " SELECT tblKndDaten.PatID, tblKndDaten.PatZuname, tblKndDaten.PatVorname, tblKndDaten.PatGebDat, tblKndDaten.PatSozVersNr, tblKndDaten.PatTelefon, tblKndDaten.PatMobil " & _
      " FROM tblKndDaten " & _
      " ORDER BY tblKndDaten.[PatZuname]"
    Case 3
      SQLStr = " SELECT tblKndDaten.PatID, tblKndDaten.PatZuname, tblKndDaten.PatVorname, tblKndDaten.PatGebDat, tblKndDaten.PatSozVersNr, tblKndDaten.PatTelefon, tblKndDaten.PatMobil" & _
      " FROM tblKndDaten" & _
      " WHERE (((tblKndDaten.PatAktiv)=false))" & _
      " ORDER BY tblKndDaten.[PatZuname]"
  End Select
  'SQLStr ausführen
  [b]'aber wie ????? [/b] :-( 
  Me.lbKunden.??????
End Sub

DoCmd.RunSQL SQLStr funktioniert nicht und auch Form.Recordsource = SQLStr funktioniert auch nicht!

Hab ich schon wieder zuviel Wünsche an VBA.Objecte?

Versiedene Abfragen für ein Listenfeld

Martin Asal @, Donnerstag, 03.09.2020, 14:34 (vor 28 Tagen) @ Neuling001

Hallo Floyd,

du gehst die Sache wohl viel zu kompliziert an. Weißt du, dass man ein Formular filtern kann?

Private Sub cmbKndSelect_AfterUpdate()
 
Select Case Nz(Me.cmbKndSelect.Column(0))
Case 1
    Me.Filter = "PatAktiv=True"
    Me.FilterOn = True
Case 2
    Me.Filter = "PatAktiv=False"
    Me.FilterOn = True
Case Else
    Me.Filter = ""
    Me.FilterOn = False
End Select
 
End Sub


Martin

Versiedene Abfragen für ein Listenfeld

Neuling001, Freitag, 04.09.2020, 22:31 (vor 27 Tagen) @ Martin Asal

Hallo Martin,
danke für die Hilfe. Leider tut sich bei mir nichts. Ich denke ich habe noch irgendwas vergessen.
Zur Anschauung mein Code, von dem ich meine, dass es klappen müßte:

Private Sub cmbKndSelect_AfterUpdate()
  Select Case Nz(Me.cmbKndSelect.Column(0))
Case 1
    Me.Filter = "PatAktiv=True"
    Me.FilterOn = True
Case 2
    Me.Filter = "PatAktiv=False"
    Me.FilterOn = True
Case Else
    Me.Filter = ""
    Me.FilterOn = False
End Select
lbKunden.Requery '(die Listbox muß doch aktualisiert werden - oder?)
End Sub

Ich muß gestehen ich habe Dein Listing einfach in meine Sub hineinkopiert.

Versiedene Abfragen für ein Listenfeld

Martin Asal @, Samstag, 05.09.2020, 14:48 (vor 26 Tagen) @ Neuling001

Ich muß gestehen ich habe Dein Listing einfach in meine Sub hineinkopiert.

Nicht umsonst hatte ich gefragt, ob du dich mit Filtern auskennst ;-)

Aus deinem ersten Lösungsansatz ging hervor, dass du eigentlich immer dieselben Daten anzeigen willst, nur eben mit verschiedenen WHERE-Klauseln. Also: Stell lieber gleich ganz herkömmlich die Datensatzquelle für dein Formular ein, und über die Filter-Eigenschaft filterst du dann eben. Ein Formularfilter ist nämlich nichts anderes als eine WHERE-Klausel.

Martin

Versiedene Abfragen für ein Listenfeld

Neuling001, Montag, 07.09.2020, 19:07 (vor 24 Tagen) @ Martin Asal

Hallo Martin,
danke für die Hilfe. Ich hab in der Hilfe von VBA-Access versucht eine Unterstützung zu finden, aber es ist das Ergebnis ziemlich mau gewesen.
Ich hab nun in der Form eine stink-normale Abfrage aller Felder der Kundentabelle eingefügt und gehofft jetzt wird funktionieren. Leider noch immer nicht die gewünschte Reaktion.

Ich hab ehrlich gesagt keine Ahnung was ich falsch machen könnte

  • Abfrage in Datenherkunft in der Form eingegeben
  • Dein Listing in das Ereignis NachAktualisieren meines Kombinationsfeldes mit der richtigen Spalte verbunden - nichts


Offenbar fehlt mir da noch einiges an Erfahrung

Beste Grüße

RSS-Feed dieser Diskussion
powered by my little forum