Neuigkeiten:

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

Mobiles Hauptmenü

Filter für Kombinationsfeld über Schaltfläche setzen

Begonnen von Benny80, April 09, 2019, 15:32:38

⏪ vorheriges - nächstes ⏩

Benny80

Deshalb schrieb ich ja am anfang. In der einfachsten Form. Das die Daten sich wiederum aus anderen Tabelle  mit einem Fremdschlüssel beziehen ist ja so. Aber im Grunde geht es ja nur um den Code oder die Art, wie ich ei nen Filter in ein Kombonationsfeld setzen kann. So das ich das Kombinationsfeld über eine Schaltfläche beinflussen kann. Um so die Auswahl der Angezeigten Informationen zu minimieren. Und es mit der selben oder anderen Schaltfläche zu beeinflussen. Es geht nicht darum, die Imformationen innerhalb der Datenbank so klein wie möglich zu halten. Das habe ich schon. Über eine tabelle die nur DIN einträge hat. Eine Tabelle die nur die Art der verbindungsformen besitzt. Eine die nur die masse besitzt etc. Also das thema mit den fremdschlüsseln habe ich schon verstanden auch das man normal einen autowert als id verwendet. Aber nun geht es mir wirklich nur darum... wie beeinflusse ich von außen ein kombinationsfeld.

Benny80

Ich muss bei sowas nur die logik verstehen, die hinter den dinken steckt, wie zum beispiel beim ausführen der schaltfläche wird ein wert in den bereich x eingetragen, der sozusagen der funktion vorgibt nur x auszuspucken. Wenn ich zumbeispiel wüsste wie ich bestimmte dinge im kombinationsfeld beeinflussen kann, kann ich durch das anwenden umd verändern die funktion lernen. So hab ich mir bis jetzt alles bei gebracht. Wenn man nun zum beispiel sagt zum beispiel diese funktion erlernst du nur über vba bezogen auf xyz, gehe ich gezielt auf das thema los. So wie mit dem post von mir zu vor. Die lösung war nur das wort fremdschlüssel für mich. Über das wort und google youtube und logisches denken konnte ich schnell alles weitere verstehen. So wie auch die fehlermeldungen die abfrahe ist zu komplex. Somit wusste ich, was die grenze einer abfrage in dem bereich ist. Aber wie so oft fehlt mir winfach nur das richtige wort zu meiner suche.

Benny80

Anderes beispiel war das menü ausschalten. Irgendwann bekam ich den hinweis. RIBBON und nun weiss ich wie man es aus und einschaltet, und wie man alles bis auf die entwurfansicht ausschalten kann. Auch so sachen wie das offnen eines hauptmenüs. Ich wäre nie drauf gekommen sowas über optionen einzustellen. Dachte das muss ich über codes machen. Aber was ich sagen möchte ist wenn man mir zumindest den richtigen weg zeigen kann. Bilde ich mich gerne auch alleine weiter. Aber ich brauch irgend ein schlagwort.

MzKlMu

Hallo,
eine einfache Filterung setzt ein korrektes Datenmodell voraus.
Und der Aufbau den Du weiter oben (in #12) beschrieben hast ist falsch.
Da fehlt eine Tabelle.
Zeige also mal das Bild des Beziehungsfensters.
Gruß Klaus

Benny80

Da ich nun zu Hause bin und die Datenbank auf der Arbeit habe, erstelle ich mal schnell eine vereinfachte Form der Datenbank, die jedoch genau das wieder gibt, was ich brauche. (suche)

Benny80

So sieht es ungefähr aus: (siehe Anhang)

Man kann jetzt schon sehen, dass das Kombinationsfeld ziemlich groß werden kann, deshalb möchte ich über die Tasten zum beispiel die Auswahl reduzieren. Ich werde natürlich mehr filter etc. einbauen. Oder vielleicht ein zweites Kombinationsfeld als Filter verwenden, dazu muss ich jedoch wissen, wie ich den Filter auf diese weise verwenden muss.


Benny80


Benny80

#22
Also ich hab diese Codes, die ich jedoch nicht auf das Kombinationsfeld anwenden kann.

Private Sub BefehlGrossFilter_Click()
    Me.Filter = "[VerschraubungsID] like 'G'"
    Me.FilterOn = True
End Sub

Private Sub BefehlWürthFilter_Click()
    Me.Filter = "[VerschraubungsID] like 'W'"
    Me.FilterOn = True
End Sub

Und Filter entfernen:
Private Sub BefehlFilterAus_Click()
    Me.FilterOn = False
End Sub

Diese Codes beziehen sich auf das gesamte Formular, wahrscheinlich wegen dem Eintrag "Me". Blos kenne ich halt keinen anderen Code und kann ihn nicht auf das Kombinationsfeld umwandeln.

Benny80

So habe nun im Netz gesucht und folgendes gefunden, werde es jedoch erst Morgen testen.

Option Compare Database
Option Explicit

   'EREIGNIS --> Bei Änderung...

Private Sub tEXTFELDNAME_Change()

   fl_Aktualisieren_1 (tEXTFELDNAME.Text)

End Sub



   'fl_ = Lokale Funktion - Etwas, was im Hintergrund läuft.

Private Sub fl_Aktualisieren_1 (sFilter As String)

   Dim sSQL As String

   sSQL = "SELECT fELDNAME1aUStABELLE, fELDNAME2aUStABELLE, fELDNAME3aUStABELLE, fELDNAME4aUStABELLE "

   sSQL = sSQL & " FROM hIERkOMMTdERtABELLENnAMEhIN"


   If Not sFilter = "" Then
      Dim arrFilter
      arrFilter = Split(sFilter, " ")

      Dim varWort

      For Each varWort In arrFilter
         If Not varWort = "" Then
         Dim sWort As String
         sWort = varWort
         sSQL = sSQL & " AND [fELDNAME2aUStABELLE] & ' ' & [fELDNAME3aUStABELLE] LIKE '*" & sWort & "*'"
      End If
   Next

   sSQL = Replace(sSQL, " AND ", " WHERE ", 1, 1, vbTextCompare)

   End If

   zIELkOMBINATIONSFELD.RowSource = sSQL

   ' RowSource = Zeilenquelle

End Sub

Sollte es funktionieren, werde ich dieses Textfeld verbergen und über eine Schaltfläche direkt ansteuern.

MzKlMu

#24
Hallo,
ich habe Dir mal die oben hochgeladene Datenbank auf datenbankkonforme Füße gestellt.
Damit lässt auch Dein Wunsch mit der Filterung der Kombis viel einfacher erledigen.
Die Filterung mit Like wird nicht mehr benötigt.
Anbei mal die DB mit 2 Abfragen.
Ich habe aber jetzt keine Zeit mehr, ich muss noch was fertig machen, das ich morgen früh brauche. Ich baue Dir morgen Abend mal das Formular noch um mit der Filterung des Kombis.

Sieh Dir die DB mal an, mit den Tabellen und den Beziehungen. Auch die beiden Abfragen.

PS:
Lade Beispieldb's bitte direkt hier hoch, Dropbox braucht es da nicht. Machen auch viele nicht so gerne.
Gruß Klaus

Benny80

Ich danke dir für die Mühe, aber brauchst du nicht mehr zu machen, bin mit der Formel oben vollkommen zu frieden.

Am Ende zählt für mich ja nur das Ergebnis und wenn ich eine Formel für ein Problem verwenden kann, ist es für mich perfekt.

Aber die Abkürzung qry (= query (Abfrage auf English)) finde ich cool.

Ich erstell mal einen Post, damit beim nächsten mal die Personen direkt zum Ergebnis geführt werden können.

Beaker s.a.

Hallo Benny,
ZitatIch erstell mal einen Post, damit beim nächsten mal die Personen direkt zum Ergebnis geführt werden können.
Gibt es doch schon, - schaust du hier: http://www.donkarl.com?FAQ4.36
gruss ekkehard
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)

Benny80

Also an sich sind die Infos dort schon sehr gut und ja ich konnte da für mich auch schon das eine oder andere raus verwenden. Aber ich als anfänger hätte nur mit dem Link kaum was verstanden. Mag vielen nicht so gehen. Aber mir schon.

Eine frage jedoch zu dem code den ich oben gepostet habe. Ist es es möglich auch über mehr als nur das eine textfeld auf ein und das selbe Kombinations- oder Listenfeld zugreifen zu können. Also so zusagen feiner filtern zu können.

Beaker s.a.

Zitatbin mit der Formel oben vollkommen zu frieden.
Hoffentlich schreibt den Code keiner mal ab.
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)