Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Wert aus abhängigem Kombinationsfeld in Tabelle schreiben

Begonnen von Lemmi1990, August 09, 2024, 14:55:19

⏪ vorheriges - nächstes ⏩

Lemmi1990

Hallo zusammen,

ich möchte mir eine Datenbank erstellen, in die ich diverse Sachen eintrage. Ein Teil davon wird über ein Formular mit abhängigen Kombinationsfeldern gemacht. Als Beispiel habe ich die Datei angehangen, die verschiedene Produkte einer Kategorie zuordnet.
Eine Beispieldatei habe ich angehangen.

Die Felder funktionieren und werden im Formular angezeigt. Nun möchte ich aus dem Formular die ausgewählten Werte in die Tabelle "Datenbank" schreiben. Für die Produktspalte klappt das auch, bei der Kategorienspalte wird jedoch lediglich der Index angezeigt und nicht der Klarname. Eine Änderung der gebundenen Spalte im Formular führt bei jeder Auswahl im zweitem Kombinationsfeld zu einer Parameterabfrage, die ich nicht haben möchte.

Wie kann ich das Kombinationsfeld bearbeiten, dass mir jeweils der Produktname und die Produktkategorie in die Datenbank geschrieben werden?

Anbei der Code, den ich mir aus dem Internet besorgt habe, da ich kaum Programmier/Accesskenntisse besitze

Private Sub cboKategorien_AfterUpdate()
    Dim strSQL As String
    strSQL = "SELECT ProduktID, Produkt FROM tblProdukte WHERE KategorieID = " & Me!cboKategorien
    Me!cboProdukte.RowSource = strSQL
End Sub


Vielen Dank schon einmal für die Rückmeldung.

MzKlMu

#1
Hallo,
hier musst Du noch mal nachdenken. Dein Ansatz ist komplett falsch.
Es genügt in der Datentabelle nur das Produkt über dessen Fremdschlüssel zu speichern. Da es in der Produkttabelle einen Fremdschlüssel zur Kategorie ergibt ist nach Auswahl eines Produktes die Kategorie automatisch.
Kombinationsfelder zur Auswahl speichern immer die ID die in Spalte 1 steht. Daher ist die gebundene Spalte eines Kombis immer die 1.
Was man im Kombi sieht wird über die Spaltenbreite bestimmt.
In Tabellen legt man auch keine Nachschlagefelder an, die kommen ausschließlich in Formularen zum Einsatz.

Das Kombi zur Auswahl hat 3 Spalten. Spalte 1 (ist auch gebundene Spalte) steht auf 0cm Breite und zeigt damit die ID nicht an, sondern das Produkt. Bei Auswahl (aufgeklappt) wird noch die Kategorie angezeigt.
Das Formular ist an eine Abfrage gebunden wodurch die Kategorie zum Produkt automatisch angezeigt wird.
Das Feld für die Kategorie ist gesperrt da es automatisch gefüllt wird.

Wenn Du das Kombi zur Produktauswahl auf eine Kategorie beschränken willst, so kommt in den Formularkopf ein ungebundenes Kombi zur Vorauswahl einer Kategorie.

In einer Datenbank sollten unbedingt auch Beziehungen mit referentieller Integrität angelegt werden, ohne gibt das ein Datenhaufen, aber keine Datenbank. Ich habe diese angelegt, im Beziehungsfenster kannst Du das sehen.

Du solltest auch keine Buttons anlegen mit eingebetteten Makros. Die verwendet niemand und demzufolge gibt es auch keine Hilfe dazu.
Die von Dir angelegten Buttons sind so auch nicht notwendig. Wenn keine Datenvalidierung durchgeführt wird, braucht es keinen Button zum Speichern. Access speichert ohne Rückfrage automatisch.
Einen neuen Datensatz kann man auch über die Navigationsleiste (unten) anlegen.

Geänderte DB anbei.

Hier ist noch ein Link zu einem Tutorial zu Access. Das solltest Du mal durcharbeiten.

https://www.access-tutorial.de/


PS:
Der Tabelle "Datenbank" solltest Du einen sinnvollen Namen geben. Eine Tabelle ist keine Datenbank, sondern nur Bestandteil eine kompletten Datenbank die aus Tabellen, Abfragen, Formularen usw. besteht.
Gruß Klaus

Lemmi1990

Hallo MrKlMu,

danke für die ausführlichen Informationen und den Link.
Ich schau mir das gleich mal an  :).

Kurz als Hintergrund: Die Datei soll für mich auf der Arbeit als eine Art Tagebuch dienen. Normalerweise wird alles in Excel gemacht, ich habe damit allerdings negative Erfahrungen gemacht. Deswegen versuche ich gerade in Access reinzuschnuppern.

Die Buttons finde ich eigentlich ganz praktisch. Die machen für mich das Formular übersichtlicher, auch wenn dieselben Funktionen in der Navigationsleiste zu sehen sind. Was spricht denn gegen die Verwendung solcher Buttons?

Liebe Grüße

MzKlMu

Hallo,
ZitatNormalerweise wird alles in Excel gemacht, ich habe damit allerdings negative Erfahrungen gemacht. Deswegen versuche ich gerade in Access reinzuschnuppern.
Man kann im Regelfall eine Exceltabelle nicht einfach in Access übernehmen. Access erfordert einen völlig anderen Tabellenaufbau. Access ist zeileneorintiert, Excel meist spaltenorientiert.
ZitatDie Buttons finde ich eigentlich ganz praktisch.
Wenn Du alleinger Nutzer der DB ist, machen die Buttons keinen Sinn.
Wenn Du keine Datenvalidierung/Prüfung durchführst ist ein Button zum Speichern sinnlos, denn Access speichert bei gebundenen Formularen (was die Regel ist) immer automatisch, ohne Dein Zutun. Formular schließen oder Datensatzwechsel im Formular oder Datenbank beenden speichert die Daten ohne weitere Rückfrage.

Ein Button zum Anlegen eines neuen Datensatzes kannst Du wenn Du willst anlegen. Du solltest dann aber VBA Code verwenden und keine eingebetteten Makros.
Gruß Klaus