Neuigkeiten:

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

Mobiles Hauptmenü

Kombinationsfeld mit suchfunktion mit VBA Filtern

Begonnen von shinoda70, Juni 09, 2020, 15:13:56

⏪ vorheriges - nächstes ⏩

shinoda70

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

   

crystal

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.
Wer Fehler in meinen Antworten findet, darf sie behalten, muss sie aber kommentieren. ;-)
Dies ist keineswegs arrogant gemeint, sondern soll nur unterstreichen, dass meine Antworten - natürlich - nicht immer fehlerfrei sind und sein können.
Devise: bitte immer erst selbst probieren!

Aus gesundheitlichen Gründen nur noch selten dabei...

DF6GL

#2
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
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

Beaker s.a.

Und das ganze LIKE-Gedöns entfällt auch, wenn man atomare Inhalte in
eigene Felder schreibt.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

DF6GL

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

shinoda70