Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: shinoda70 am Juni 09, 2020, 15:13:56

Titel: Kombinationsfeld mit suchfunktion mit VBA Filtern
Beitrag von: shinoda70 am Juni 09, 2020, 15:13:56
Hallo Leute,

ich brauche dringend Eure Hilfe  :'(
Bin gerade dabei eine Datenbank für Betriebsmittel zu erstellen.
Jetzt möchte ich ein (Such- und Übernahme-)Kombinationsfeld (welches ich mit dem Assistenten eingerichtet habe) gerne per VBA filtern.

Also das Feld greift ja auf eine SQL Datensatzherkunft zu: Select [01a_Erweiterte Werkzeugdaten].[Werkzeugnummer] ...usw
Jetzt möchte ich die Werkzeugnummern gerne filtern.
Die Werkzeugnummern bestehen aus zwei ARTEN.
Einmal mit der Anfangszahl 1, und einmal mit der 2. 
Beispiel: 1.0015-01, 1.0016-01, 1.0016-02, 2.0015-01, 2.0015-02, usw...

Die gesamten Datensätze habe ich per Optionsgruppenfeld "alle", "1.xxxx-xx", und "2.xxxx-xx" schon erfolgreich über VBA gefiltert


Private Sub FilterWkzdtn_AfterUpdate()
  Select Case Me!FilterWkzdtn
         Case 1
            Me.Filter = ""
            Me.FilterOn = True
         Case 2 '
            Me.Filter = " [Werkzeugnummer] like '1*" & strWert & "*'"
            Me.FilterOn = True
         Case 3
            Me.Filter = " [Werkzeugnummer] like '2*" & strWert & "*'"
            Me.FilterOn = True
     End Select
End Sub


Jetzt die Frage.....
Kann man das "Pulldown" Such-Kombinationsfeld auch filtern????
Im Moment werden mir noch beide Werkzeugnummern, also alle 1er und 2er im (Such)Kombifeld angezeigt.  :(

   
Titel: Re: Kombinationsfeld mit suchfunktion mit VBA Filtern
Beitrag von: crystal am Juni 09, 2020, 16:57:24
Hallo,
was ich aus der rudimentären Beschreibung entnehme, ist leider nicht viel...

Es fehlen m.E. auch gewisse Standards bei der Benennung von Feldern (Controls)...

Aber gleichviel - statt mit einem Filter zu arbeiten, solltest du der Combobox eine .Recordsource zuordnen.
Also im Event Afterupdate des Optionsgruppe etwa so:

...
CONST c34 as String = """"  'dies weist der Konstanten c34 ein "Gänsefüßchen" zu, also ein simples "
...
Case 1
   cboMyCombobox.Recordsource = "SELECT blabla FROM table;"
Case 2
   cboMyCombobox.Recordsource = "SELECT blabla FROM table WHERE tableFeld LIKE " & c34 & "1*" & c34 & ";"
Case 3
   cboMyCombobox.Recordsource = "SELECT blabla FROM table WHERE tableFeld LIKE " & c34 & "2*" & c34 & ";"
End Select



Dein Zugriff auf "Me.Filter" etc. setzt ja keinen Filter für die Combobox, sondern für "Me". Und das ist m.E. in dem Fall die Optionsgruppe selbst oder das Formular gesamt (hab ich nicht weiter geprüft, probier mal im Direktfenster "?Me.Name" nachdem du einen Breakpoint z.B. bei "End Select" gesetzt hast). Mir scheint die Verwendung von "Me.***" hier falsch. Ich frage mich, ob dieser Code ohne Fehler kompiliert werden kann. Bin mir auch nicht sicher, ob Comboboxen Filter überhaupt unterstützen, deshalb die Zuweisung von .Recordsource im obigen Beispiel.
Titel: Re: Kombinationsfeld mit suchfunktion mit VBA Filtern
Beitrag von: DF6GL am Juni 09, 2020, 17:47:25
Hallo,

er filtert ja nicht das Kombifeld, sondern das Form ("Me.Filter) zunächst mit der Optionsgruppe.

Einzubauen ist ein zusätzliches Kombifeld ("cmbSuchen"), das mit der Optionsgruppen-Auswahl (ähnlich wie beschrieben) gefiltert wird.

Das Gänsefuß-Getöse braucht es nicht:

Private Sub FilterWkzdtn_AfterUpdate()
  Select Case Me!FilterWkzdtn
         Case 1
                 Me!cmbSuchen.Rowsource = " Select  WerkZg_ID, Werkzeugnummer from  01a_Erweiterte Werkzeugdaten  Order by  Werkzeugnummer"

        Case 2
                 Me!cmbSuchen.Rowsource = " Select  WerkZg_ID, Werkzeugnummer from  01a_Erweiterte Werkzeugdaten  Where Werkzeugnummer Like '1*'   Order by  Werkzeugnummer"

         Case 3
                  Me!cmbSuchen.Rowsource = " Select  WerkZg_ID, Werkzeugnummer from  01a_Erweiterte Werkzeugdaten Where Werkzeugnummer Like '2*'   Order by  Werkzeugnummer"
     
End Select
End Sub



Kombifeld "cmbSuchen":
Datensatzherkunft:  leer
Spaltenanzahl: 2
Spaltenbreiten: 0cm;6cm
gebundene Spalte: 1

Das Kombifeld filtert anschließend  das Form, wobei "Werkzg_ID" der Primärschlüssel (Zahl Long, Autowert) in der Tabelle ist.

Sub cmbSuchen_Afterupdate()

Me.Filter " Werkzg_ID = " & Me!cmbSuchen
Me.FilterOn =True

End Sub
Titel: Re: Kombinationsfeld mit suchfunktion mit VBA Filtern
Beitrag von: Beaker s.a. am Juni 10, 2020, 18:07:21
Und das ganze LIKE-Gedöns entfällt auch, wenn man atomare Inhalte in
eigene Felder schreibt.
Titel: Re: Kombinationsfeld mit suchfunktion mit VBA Filtern
Beitrag von: DF6GL am Juni 10, 2020, 18:50:45
 ;D
Titel: Re: Kombinationsfeld mit suchfunktion mit VBA Filtern
Beitrag von: shinoda70 am Juni 15, 2020, 21:38:33
Hab es hinbekommen, danke