Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Benny80 am April 09, 2019, 15:32:38

Titel: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Benny80 am April 09, 2019, 15:32:38
Hallo,
ich hoffe ihr könnt mir helfen.

Gegebenheiten (in der einfachsten Form)

Tabelle, die über ihren Primärschlüssel, als Fremdschlüssel mit einer Haupttabelle verbunden ist.

Nebentabelle: tblFirmendaten

Haupttabelle: tblAnwenderbereich

Abfrage: abfAnwenderbereich

Formular: formAnwenderbereich

Über Kombinationsfeld_Firma (im Formular) wird der Eintrag in die Haupttabelle eingepflegt.

Der Eintrag im Feld des Fremdschlüssel wurde genau definiert.

Zum Beispiel steht für die Firma Gross (vor dem Rest der ID) der Vorsatz GS, für die Firma Hademeier (HR) und für die Firma Würth (WH).

Nun möchte ich das nach dem Betätigen der Schaltfläche GS [ BefehlGS_Click() ], das Kombinationsfeld_Firma so gefiltert wird, dass es mir nur noch die Datensätze mit dem ID Vorsatz GS zur Auswahl anzeigt.

Das Gleiche will ich mir dann noch für die Firma HR und WH erstellen.

Nun meine Frage:
Kann mir jemand eine einfache Methode (vielleicht über die Abfrage) oder einen VBA Code nennen, mit dem ich mein Ziel erreiche?
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: MzKlMu am April 09, 2019, 15:43:25
HZallo,
das solltest Du überdenken, das ist nicht Datenbankkonform.
Ein Datenbankfeld sollte immer nur einen Inhalt haben. 1.Normalform, atomare Inhalte.
Das Firmenkürzel gehört in die Tabelle mit den Firmennamen (tblFirmendaten) und darf in der Tabelle tblAnwenderbereich nicht gespeichert werden. Als Primärschlüssel für die Firma nimmt man einen Autowert.

Was steht denn jetzt in der ID außer dem Zusatz ?

Zeige mal ein Bild des Beziehungsfensters mit den beiden Tabellen.
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Benny80 am April 09, 2019, 16:01:07
GS000001
GS000002
GS000003
bis zu GS092000
HR000001
HR000002
HR000003
bis zu HR001929
WH000001
WH000002
WH000003
bis zu WH003022
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: MzKlMu am April 09, 2019, 16:05:05
Hallo,
wo kommt die Zahl nach dem Kürzel her ?

Wo ist das Beziehungsbild ?

Zu den anderen Hinweisen sagts Du nix ?

Spare Dir solche wenig hilfreichen kommentarlosen Antworten. Die helfen Dir gar nix.
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Benny80 am April 09, 2019, 16:11:13
Ich habe die Zahlen in der Idee absichtlich selber (nicht über Autowert) erstellt, um sie später (nach Menschlicher Logik) filtern zu können.

Zum Beispiel:
ID                     Firma              Beschreibung            DIN           Maße
GS000042          Gross              Zylinderschraube      912           M4x20
GS000043          Gross              Zylinderschraube      912           M8x30

und so weiter.

Hab mir sozusagen eine Bibiothek erstell, aus der ich mir dann die Daten ziehe.

Wenn ich sozusagen, im Formular GS000043 wird im Formular der Rest eingetragen.
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: MzKlMu am April 09, 2019, 16:27:59
Hallo,
Deine ID ist ungeeignet und wird in einer Datenbank so nicht verwendet.
Das Kürzel gehört nur zur Firma und die ID ist bei den Artikel als reine Zahl (ArtikelID) zu speichern.
In einer Abfrage wird dann das Feld zum Suchen zusammmengesetzt.
Suchfeld: Kürzel & Format(ArtikelID;"000000")
Im Suchfeld kannst Du dann wie gewoht suchen.

PS:
Ich hatte Dir mal Links zu Grundlagen gepostet, haben scheinbar nix genutzt.  ;D
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Benny80 am April 09, 2019, 16:44:04
Ok aber die frage bleibt dennoch, kann man über eine Schaltfläche einen bestimmten bereich zum beispiel: zeige mir nur im Kombinationsfeld alle Auswahlen der id 1000 bis 1999 an. Oder zeige mir nur alle auswahlen aus dem feld firma die Gross heißen an. Denn Rest wieder auf autowert zu stellen ist ja jetzt nicht das problem. Selbst wenn ich die daten über export import über excel nochmal einfügen muss.
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: MzKlMu am April 09, 2019, 17:01:00
Hallo,
natürlich geht das, Du musst ja nur noch filtern.
Wo hast Du da ein Problem ?
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Benny80 am April 09, 2019, 17:05:05
Ich weiss halt nicht wirklich wie ich das über eine schaltfläche die sich dann auf ein kombinationsfeld bezieht funktioniert. Ich weiss, dass ich über einen festen fllter in der abfrage erzielen kann. Aber ich möchte diesen filter ja setzen und entfernen können und durch einen anderen filter (schaltfläche) verändern können.
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: MzKlMu am April 09, 2019, 17:14:39
Hallo,
da sind erst mal noch einige Dinge zu klären.
Kann ein Artikel (z.B. Zylinderschraube) nur von einer Firma geliefert werden ?

Kannst Du bitte mal ein Bild des Beziehungsfensters (so wie es jetzt ist) posten ?

Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Benny80 am April 09, 2019, 17:16:11
Klar kann ich machen sobald ich wieder vorm rechner bin. Bin aktuell im zug am handy. Aber mache ich gerne.
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: MzKlMu am April 09, 2019, 17:17:33
Hallo,
und bitte auch alle Fragen beantworten:
ZitatKann ein Artikel (z.B. Zylinderschraube) nur von einer Firma geliefert werden ?
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Benny80 am April 09, 2019, 17:20:18
Aber vorweg, die daten der schraube zum beispiel kann von jeder firma kommen, so kann auch der selbe datensatz bis auf dem feld firma und id gleich sein. Es wird dann nur über ein telfonat mit dem einkauf und dem sogenannten lieferzeitpunkt entschieden, welchen hersteller man nimmt.
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Lachtaube am April 09, 2019, 17:29:07
Da wird doch hinten und vorn kein Schuh draus. Du benötigst eine Tabelle mit den Firmendaten, eine Tabelle für die Items und eine Tabelle, in der Firmendaten und Items zusammengeführt werden. In einer vierten Tabelle werden dann die Bestellungen angelegt (mit Fremdschlüsselfeld auf die 3. Tabelle).
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: MzKlMu am April 09, 2019, 17:40:41
Hallo,
dachte ich es mir doch, das wird so nix. Da schließe ich mich Lauchtaube doch mal gleich an. Da musst Du noch mal ans Eingemachte gehen.

Die Beziehungen zwischen Lieferant und Artikel ist eine ganz klassische n:m Beziehung zu der alleine mal drei Tabellen notwendig sind. Wie auch von Lachtabe beschrieben.
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Benny80 am April 09, 2019, 17:41:44
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.
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Benny80 am April 09, 2019, 17:49:14
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.
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Benny80 am April 09, 2019, 17:55:16
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.
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: MzKlMu am April 09, 2019, 17:55:46
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.
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Benny80 am April 09, 2019, 19:29:53
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)
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Benny80 am April 09, 2019, 21:32:34
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.

Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Benny80 am April 09, 2019, 21:54:11
Auch wenn diese Datenbank niemand brauchen wird, hier ein Link.

https://www.dropbox.com/s/tm8nahkknah9z1b/Database8.accdb?dl=0
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Benny80 am April 09, 2019, 22:17:46
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.
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Benny80 am April 09, 2019, 23:41:51
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.
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: MzKlMu am April 09, 2019, 23:43:44
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.
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Benny80 am April 10, 2019, 07:28:44
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.
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Beaker s.a. am April 10, 2019, 13:29:30
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 (http://www.donkarl.com?FAQ4.36)
gruss ekkehard
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Benny80 am April 10, 2019, 15:22:50
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.
Titel: Re: Filter für Kombinationsfeld über Schaltfläche setzen
Beitrag von: Beaker s.a. am April 10, 2019, 17:09:44
Zitatbin mit der Formel oben vollkommen zu frieden.
Hoffentlich schreibt den Code keiner mal ab.