Combobox mit Abfrage gefüllt - anderen Wert zuweisen (Access)

Tomate, Montag, 08.04.2019, 08:34 (vor 77 Tagen)

Hallo,
ich komme aus dem C# und Java Bereich und lerne jetzt VBA.
Ich habe mehrere Foren durchsucht, aber leider nichts passendes gefunden.

Ich habe ein Formular mit mehreren Textfeldern, 1 Kontrollkästchen und 1 Combobox angelegt. Die gefüllte Datenbank ist in Tabellen in Access hinterlegt. Bei der Combobox habe ich als Datensatzherkunft die Abfrage eingestellt. - Funktioniert soweit alles.

Ich möchte die Combobox auch als "Suchen" benutzen, also beim Anklicken von einem der angebotenen Werte, soll der Wert in der Combobox und in allen anderen Feldern angezeigt werden.

Was ich an Code habe:
Ich rufe das bei der Funktion Click auf.
Set rs = CurrentDb.OpenRecordset("SELECT TestAnmelde…..
If rs.RecordCount > 0 Then
Do While Not rs.EOF
strListe = strListe & rs!KatergorieID & ";" & rs!Anbieter & ";"
If Kombinationsfeld108.Text = rs!Anbieter Then
-> Zuweisung der Textfelder und des Kontrollkästchens
Me!Bemerkung = rs!Bemerkung -> funktioniert
-> Zuweisung der Combobox mit neuem Wert
Me!Kombinationsfeld108 = rs!Anbieter -> keine Fehlermeldung, aber zeigt dem ausgewählten Wert nicht an, der bleibt leer, beim Debuggen zeigt er mir den neuen Wert aber an!!
Me!Kombinationsfeld108.Text = rs!Anbieter -> Fehlermeldung 2115, ...auf die Eigenschaft "Vor Aktualisierung" oder "Gültigkeitsregel" festgelegt, hindert MA daran, die Daten im Feld zu speichern
Kombinationsfeld108.AddItem rs!Anbieter -> Fehlermeldung 6014, die Herkunftseigenschaft muss auf "Werteliste" festgelegt sein, um diese Methode verwenden zu können.

Als Herkunftstyp habe ich bei Tabelle/Abfrage, wenn ich was anderes einstelle, dann werden mir keine Werte mehr angezeigt.

Hat jemand noch eine andere Idee? Oder erkennt den Fehler?

Combobox mit Abfrage gefüllt - anderen Wert zuweisen

Martin Asal @, Montag, 08.04.2019, 11:35 (vor 77 Tagen) @ Tomate

Hallo Tomate,

wenn ich das richtig interpretiere, nutzt du ein ungebundenes Access-Formular und willst die Steuerelemente erst über die Combobox mit Werten füllen. Warum so kompliziert? Gib dem Formular doch einfach gleich die Abfrage als Datensatzquelle. Eine Combobox als Suchfeld kannst da dann ja immer noch einbauen.

Martin

Combobox mit Abfrage gefüllt - anderen Wert zuweisen

Tomate, Montag, 08.04.2019, 11:58 (vor 77 Tagen) @ Martin Asal

Hallo Martin,
das Formular hat bereits eine Datensatzquelle, kann auch die Abfrage auswählen. Funktioniert immer noch bzw. auf die Combobox bezogen nicht.
Ich hole mir an dieser Stelle die Daten frisch aus der DB, um sie anzeigen, bzw. ändern zu können. (Da ich das Passwort verschlüsselt in die DB geschrieben habe und ich die Daten immer frisch aus der DB geholt hatte.)
Hast du noch eine andere Idee?
Als Workaround habe ich jetzt noch zusätzlich ein Textfeld angelegt, welches mir den gewünschten Datensatz aus der Combobox anzeigt. Aber die Combobox bleibt halt leer.
(Das Problem habe ich ja mit den Textfeldern nicht.)
LG Tomate

Combobox mit Abfrage gefüllt - anderen Wert zuweisen

Martin Asal @, Montag, 08.04.2019, 16:41 (vor 77 Tagen) @ Tomate

entweder verstehe ich die Frage nicht, oder du nicht die Funktionsweise von Accessformularen.

Im Gegensatz zu z.B. VBA-Formularen, wie sie in Word oder Excel verwendet werden, zeigen die Steuerelemente eines Accessformulars die Daten der Datensatzquelle unmittelbar an. Sie werden also nicht erst im Steuerlement "zwischengespeichert", und du musst die Daten auch nicht "frisch aus der DB holen". Daher müsstest du doch problemlos zwischen den Datensätzen wechseln können, wenn du die Navigationsschaltflächen anzeigst? Das Kombifeld soll also nur eine zusätzliche Navigationsmöglichkeit bieten. Zumindest, wenn ich dich richtig verstanden habe.

Dazu ist das Kombifeld ein ungebundenes Steuerlement, das die gleiche Datensatzherkunft wie das Formular hat. Zum Springen brauchst du dann kein zusätzliches Textfeld etc, sondern nur Code, der die ID oder ähnliches aus dem Kombifeld "NachAktualisierung" übergeben bekommt und dann zum entsprechenden Datensatz im Formular springt.

Martin

Combobox mit Abfrage gefüllt - anderen Wert zuweisen

Tomate, Dienstag, 09.04.2019, 08:11 (vor 76 Tagen) @ Martin Asal

Guten Morgen,
also wir können mal annehmen, dass ich die Funktionsweise von Accessformularen nicht verstehe ;-)
Nun basiert das Formular und die Combobox auf derselben Abfrage, und hole mit dem "NachAktualisierung" und mit Hilfe des RecordsetClone den aktuellen Datensatz. Danke für den Hinweis.
Aber die Combobox bleibt danach trotzdem leer. Vielleicht ist das auch bei Access so, dass er nach dem gefundenen Datensatz anschließend NUR die Combobox leert.

Ich bin jetzt auf jeden Fall schon mal viel schlauer und der neue Code macht auch mehr Sinn, danke.

P.S. Ich hatte mir schon 4 Buttons erstellt, wo ich vor, zurück, zum Anfang und zum Ende hin und her schalten kann. Ich dachte nur, dass so ein Suchfeld praktisch sein könnte, wenn die Liste weiter anwächst.

RSS-Feed dieser Diskussion
powered by my little forum