Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: bky am Mai 04, 2020, 17:04:08

Titel: Erklärung zu abhängigen Kombifeldern
Beitrag von: bky am Mai 04, 2020, 17:04:08
Hallo,
ich hoffe ihr seid es noch nicht leid, mir mit meiner Access-Beschränktheit weiter zu helfen  ::).

Frage 1:
Ich habe eine Frage bezüglich abhängiger Kombifelder. Ich habe um euch zu schonen natürlich vorher das FAQ von DonKarl http://www.donkarl.com/?FAQ4.36 (http://www.donkarl.com/?FAQ4.36) zu Rate gezogen.

Dort beschreibt er den Code, der beim Ereignis "nach Aktualisierung" des übergeordneten Kombifeldes ausgelöst wird folgendermaßen:

Me!cbo_Artikel.RowSource = "SELECT ArtikelBezeichnung FROM tbl_Artikel WHERE GruppenID= " & Me!cbo_Gruppen

Nun habe diesen Code an meine Bedürfnisse angepasst und bekomme nach Auswahl des übergeordneten Kombifeldes in meinem untergeordneten Kombifeld ein leeres Feld ausgegeben.

Mein Code lautet:

Me.cbo_UnterKombi.RowSource = "SELECT UnterKombi_Gruppe_1 FROM tbl_UnterKombi WHERE OberKombi_ID=1" & Me.cbo_OberKombi_ID

Meine Tabellen (jeweils per 1:n-Beziehung mit der Formulartabelle verknüpft):
tbl_UnterKombi
tbl_OberKombi

Ich möchte also bei Auswahl der OberKombi_ID=1 im übergeordneten Kombifeld nur die Reihe UnterKombi_Gruppe_1 aus der Tabelle tbl_UnterKombi im untergeordneten Kombifeld zur Auswahl angezeigt bekommen.

Frage 2:
Das Kombifeld cbo_UnterKombi hat nun z.B. 6 Auswahlmöglichkeiten (Auswahl 1, Auswahl 2, etc.). Dort treffe wähle nun Auswahl1 an. Nun möchte ich ein weiteres Kombifeld cbo_UnterKombi2 erstellen, welches mir nur noch Auswahl 2 bis Auswahl 6 anzeigt, also alle Möglichkeiten Minus der in cbo_UnterKombi gewählten.

Ich hoffe, ihr versteht mein Problem und bin euch wie immer sehr sehr dankbar für eure Antworten!

Viele Grüße,
bky

Titel: Re: Erklärung zu abhängigen Kombifeldern
Beitrag von: DF6GL am Mai 04, 2020, 17:28:14
Hallo,


1)
ZitatMe.cbo_UnterKombi.RowSource = "SELECT UnterKombi_Gruppe_1 FROM tbl_UnterKombi WHERE OberKombi_ID=1" & Me.cbo_OberKombi_ID

2)

ZitatMe.cbo_UnterKombi2.RowSource = "SELECT UnterKombi_Gruppe_1 FROM tbl_UnterKombi WHERE  UnterKombi_Gruppe_1 <> " & Me.cbo_OberKombi_ID
Titel: Re: Erklärung zu abhängigen Kombifeldern
Beitrag von: bky am Mai 05, 2020, 14:41:59
Hallo Franz,
vielen Dank für deine schnelle Antwort.

Ich habe deinen Code übernommen und nun funktioniert auch die Auswahl der Werte aus UnterKombi_Gruppe_1 im Feld cbo_UnterKombi. Allerdings sind folgende Fehler aufgetreten:

1. Für das Feld cbo_UnterKombi2 erhalte ich die Fehlermeldung "Datentypenkonflikt in Kriterienausdruck". Momentan habe ich den Feldtyp für die Kombifelder auf "Kurzer Text" stehen, da bei Feldtyp "Zahl", auf dem ich es vorher stehen hatte, keine Werte übertragen wurden. Für cbo_UnterKombi scheint das zu funktionieren, für cbo_UnterKombi2 allerdings mit besagter Fehlermeldung nicht mehr. Habe schon andere Feldtypen (auch Zahl) versucht, leider ohne Erfolg. Da im CodeMe.cbo_UnterKombi2.RowSource = "SELECT UnterKombi_Gruppe_1 FROM tbl_UnterKombi WHERE  UnterKombi_Gruppe_1 <> " & Me.cbo_OberKombi_ID das Zeichen <> verwendet wird vermute ich jedoch, dass hier ein Zahlenwert und kein Text erwartet wird, oder?

2. Mir ist leider noch nicht klar, warum beim Code Me.cbo_UnterKombi.RowSource = "SELECT UnterKombi_Gruppe_1 FROM tbl_UnterKombi WHERE OberKombi_ID= " & Me.cbo_OberKombi_ID
die erste Auswahlmöglichkeit aus dem Kombifeld cbo_OberKombi abgerufen wird. Was muss ich eingeben, damit bei Auswahl der zweiten Möglichkeit (also z.B. Gruppe 2) im Feld die entsprechenden Werte aus meiner UnterKombi-Tabelle abgerufen werden  :-\ ? Me.cbo_UnterKombi.RowSource = "SELECT UnterKombi_Gruppe_1 FROM tbl_UnterKombi WHERE OberKombi_ID=2 " & Me.cbo_OberKombi_ID
funktioniert leider nicht. Ich bin wie gesagt aber auch blutiger Anfänger was VBA angeht und muss mir das Ganze leider "nebenbei" bei der Arbeit beibringen, was natürlich ziemlich ineffektiv ist.

Vielleicht kann mir ja so schon jemand helfen. Ich werde trotz allem mal meine Datenbank soweit eindampfen, dass ich sie hochladen kann. Das kann nur einige Zeit dauern.

Vielen Dank auf jeden Fall für eure Mühen!
Viele Grüße,
bky

PS: Habt ihr einen Tipp, was das Erlernen von Access bzw. VBA angeht? Sowas wie Bücher, YouTube-Kanäle etc.?
Titel: Re: Erklärung zu abhängigen Kombifeldern
Beitrag von: bky am Mai 05, 2020, 15:48:54
Hallo,

hier die angekündigte Superschlank-Version der Datenbank.

Viele Grüße,
bky
Titel: Re: Erklärung zu abhängigen Kombifeldern
Beitrag von: DF6GL am Mai 05, 2020, 15:55:03
Hallo,

zu allen Fragepunkten:

Ohne Kenntnis der Tabellen und -felder sowie deren Datentypen (nicht Formate!) ist da wenig Konkretes zu sagen.

Zu 1)   Das Feld "UnterKombi_Gruppe_1"  in Tabelle "tbl_UnterKombi" muss bei dieser Where-Condition den Datentyp Zahl, Long haben.

Bei  Datentyp "Kurzer Text"  müssen Hochkommata als Textbegrenzer eingesetzt werden:


Me.cbo_UnterKombi2.RowSource = "SELECT UnterKombi_Gruppe_1 FROM tbl_UnterKombi WHERE  UnterKombi_Gruppe_1 <> '" & Me.cbo_OberKombi_ID & "'"


wobei die Benamsung suboptimal ist. Die Tabellen, -felder und Steuerelemente müssen nach deren datenmäßigen Sinn benannt werden ( soll heißen, nach dem, was für Daten sie darstellen, z. B. cmbOrt, wenn damit Ortschaften behandelt werden und sofern sie ungebunden sind. ). Wenn "ID" im Namen vorkommt, wird allgemein angenommen, dass der Inhalt ein "ID"-Wert ist, d. h. ein Primärschlüssel- oder Fremdschlüsselwert vom Datentyp Zahl,Long.

zu 2)  "WHERE OberKombi_ID=2 " & Me.cbo_OberKombi_ID"  ist Quatsch. die "2" muss entfernt werden. Der Vergleichswert wird durch die Auswahl bei "cbo_OberKombi_ID" angehängt.


Eine Suchmaschine Deiner Wahl sollte doch genügend Tutorials (Bücher, Videos, PDFs) zum Thema MS Access zum Vorschein bringen....
Titel: Re: Erklärung zu abhängigen Kombifeldern
Beitrag von: DF6GL am Mai 05, 2020, 16:08:14
Hallo,

anbei..

Titel: Re: Erklärung zu abhängigen Kombifeldern
Beitrag von: bky am Mai 05, 2020, 16:21:28
Hallo Franz,
danke für deine Datenbank, ich werde sie mir so früh es geht angucken!
Was die Tutorials usw. angeht habe ich nur deswegen gefragt, um zu erfahren, ob es vllt. eine Art "Access-Bibel" oder (Print)Medien gibt, die jeder besitzen bzw. sich angeschaut haben sollte, der sich damit auseinander setzt  ;). Was allgemein Tutorials usw. angeht hast du natürlich vollkommen recht, was die Verfügbarkeit angeht.

Viele Grüße,
bky
Titel: Re: Erklärung zu abhängigen Kombifeldern
Beitrag von: bky am Mai 07, 2020, 09:38:52
Hallo Franz,
ich habe mir deine Datei angeschaut. Wenn ich nun beispielsweise Gruppe 1 auswähle wird mir in meinen untergeordneten Kombifeldern leider nichts angezeigt  ??? .

Ich sehe ein, dass meine Bezeichnungen allgemein ziemlich ungünstig gewählt waren. Deshalb habe ich nochmal eine neue DB mit den Begriffen aus DonKarls Anleitung http://www.donkarl.com/FAQ/FAQ4Formulare.htm#4.36 (http://www.donkarl.com/FAQ/FAQ4Formulare.htm#4.36) erstellt und mich erdreistet diese beizufügen. Ich bin leider echt mit meinem Latein am Ende. Ich habe z.B. auch dieses Tutorial https://docplayer.org/28622056-Erstellung-von-abhaengigen-kombinationsfeldern-mit-dazugehoerigen-unterformular-1.html (https://docplayer.org/28622056-Erstellung-von-abhaengigen-kombinationsfeldern-mit-dazugehoerigen-unterformular-1.html) nachgebaut. Allerdings werden dort nur abhängige Werte angezeigt. Werte eingeben kann ich leider nicht. DonKarls Verweis auf https://pc-creativ.de//mydat/t_kombi.html (https://pc-creativ.de//mydat/t_kombi.html) konnte ich leider nicht öffnen (habe Access 2019)  :-\ .

Falls andere sich die Sache anschauen, hier nochmal, was ich bewerkstelligen möchte:
1. Ich möchte über Kombifelder eines Formulars Werte eintragen, sprich Datensätze erstellen können
2. Dazu möchte ich im übergeordneten Kombifeld eine Gruppe auswählen, von dieser Gruppe sollen bestimmte Artikelgruppen abhängig sein (also z.B. Auswahl Gruppe 1 --> Es werden mir nur die Artikel A-F zur Auswahl angezeigt)
3. Falls dies die Sache nicht unverhältnismäßig verkompliziert wäre es hilfreich, wenn bereits ausgewählte Artikel in den weiteren abhängigen Kombifeldern nicht mehr aufgeführt werden (wenn also im 1. abhängigen Kombi bereits Artikel A ausgewählt ist tauchen im 2. abhängigen Kombi nur noch die Artikel B-F auf).

Vielen Dank für euren Hilfe!

Viele Grüße,
bky
Titel: Re: Erklärung zu abhängigen Kombifeldern
Beitrag von: DF6GL am Mai 07, 2020, 11:08:44
Hallo,

ZitatWenn ich nun beispielsweise Gruppe 1 auswähle wird mir in meinen untergeordneten Kombifeldern leider nichts angezeigt

Und was soll zu diesem Zeitpunkt angezeigt werden?

Wenn Du im "OberKombi" eine Gruppe auswählst, werden in der "UnterKombi1"-Liste(!)  die dazugehörenden Daten aus der Tabelle "tblUnterkombi" angezeigt, in der "UnterKombi2"-Liste(!)  die Daten aus der selben Tabelle, aber nur die, die nicht(!) der Oberkombi-Auswahl entsprechend.

So war die Aufgabe...

1)  Unverständlich.  DS werden erstellt, indem Felder in einem neuen DS ausgefüllt werden.  Mit Kombis wählt man DS nur aus..

2) In der Db gibt es keine "Artikel" nur Felder "Unterkombi_1" und "Unterkombi_2".
Zitatvon dieser Gruppe sollen bestimmte Artikelgruppen abhängig sein (also z.B. Auswahl Gruppe 1 --> Es werden mir nur die Artikel A-F zur Auswahl angezeigt)
Es gibt keine Beziehung zwischen den Tabellen "tbl_Oberkombi" und "tbl_Unterkombi".  Wo soll da denn die Abhängigkeit herkommen?

Die Tabelle "tbl_HauptMatrix" ist aussagelos/sinnlos.

3) Das habe ich in meinem Beispiel gezeigt, allerdings mit der nicht passenden Tabellenkonstruktion.



Erstell mal eine DB mit aussagekräftigen Tabellen und -feldern (vernünftige (sinngemäße) Benamsung, normalisiert und in Beziehung gesetzt), dann sehen wir weiter.
Titel: Re: Erklärung zu abhängigen Kombifeldern
Beitrag von: bky am Mai 07, 2020, 13:55:41
Hallo Franz,

tut mir Leid, falls ich mich unklar ausgedrückt habe. Vielleicht erwarte ich von Access auch etwas, wofür es gar nicht ausgelegt ist. Ich hatte gehofft, dass man über ein Formular mit Kombifeldern einen kompletten Datensatz erstellen kann, da dies eben über "Knöpfe" geschieht und man die Werte nicht in den einzelnen Tabellen eingeben muss. Bei einer großen Zahl von Datensätzen ist es angenehmer, wenn man Daten und Werte anklicken kann, statt diese in die Datenbank einzuhacken. Da nicht nur ich, sondern auch ein Kollege Daten eintragen soll, schien mir das die einfachste Lösung zu sein.

Bei deiner angepassten Datenbank hatte ich noch keine Datensätze eingegeben, da ich das ja über die Kombifelder machen wollte. Deshalb wurde mir auch nichts angezeigt und ich war erstmal verwirrt. Zur besseren Übersicht hatte ich also nochmal meine "Testdatenbank" neu erstellt und angehängt, mit den Benennungen, die DonKarl in seinem Artikel verwendet (also "Gruppen" und "Artikel"), siehe Anhang meines letzten Beitrags. Diese Benennungen habe ich dann auf deinen Code übertragen. Darauf habe ich mich dann auch in meinem Post bezogen, also nicht mehr auf die alten Benennungen wie "OberKombi". Ich habe auch gesehen, dass in der alten Datenbank anscheinend die Beziehungen zwischen den Tabellen nicht mehr vorhanden waren, das habe ich leider nicht bemerkt. Was die tbl_Hauptmatrix angeht: diese hatte ich ursprünglich als Zwischentabelle für n:m-Beziehungen angedacht, da meine Datenbank in Wirklichkeit ja um einiges größer ausfällt. Mein Fehler, leider ist sie als Rudiment in meiner Datenbank verblieben.

Ich werde mich nochmal hinsetzen und eine möglichst präzise Erklärung verfassen, was ich überhaupt machen will und wofür das Ganze gut ist. Die entsprechende Datenbank füge ich dann auch direkt bei.

Vielen Dank nochmal und viele Grüße,
bky
Titel: Re: Erklärung zu abhängigen Kombifeldern
Beitrag von: DF6GL am Mai 07, 2020, 14:55:17
Hallo,

ZitatIch hatte gehofft, dass man über ein Formular mit Kombifeldern einen kompletten Datensatz erstellen kann, da dies eben über "Knöpfe" geschieht und man die Werte nicht in den einzelnen Tabellen eingeben muss

In gewisser Weise läuft das ja auch so, nur halt auf ein (Tabellen-)Feld bezogen und nicht auf einen ganzen DS, der ja mehrere Felder besitzen kann (und wird)  und für den dann über dazugehörende Kombis die Daten aus anderen (!) Grunddatentabellen ausgewählt und deren Primärschlüsselwert abgespeichert wird, sofern das Kombi an das entspr. Tabellenfeld gebunden ist.


ZitatVielleicht erwarte ich von Access auch etwas, wofür es gar nicht ausgelegt ist.

Access ist sehr gut dafür ausgelegt, nur hast Du vermutlich eine unklare Vorstellung von der Ausgangssituation.

Vermutlich meinst Du in der DB, dass in den Feldern in der Matrix-Tabelle  in einem (neuen oder vorhandenen)  Datensatz durch Auswahl über die Kombis die passenden Primärschlüsselwerte abgespeichert werden sollen.

Dieser Auswahlvorgang für die einzelnen Felder ist aber keine "abhängige Kombifeld"-Auswahl...


Erstell erst ml eine authentische DB mit Tabellen und Beziehungen, gibt einige (vernünftige) Werte in die Grundtabellen ein und lad die dann hier hoch mit einer Beschreibung, was Du genau machen willst.