Juni 24, 2021, 20:56:22

Neuigkeiten:

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


1:n in Formularen, Feld leer lassen

Begonnen von Clyvideo, Juni 01, 2021, 22:33:56

⏪ vorheriges - nächstes ⏩

Clyvideo

Hallo,

ich bin hier leider etwas am verzweifeln. Ich bin gerade dabei mich durch sämtliche Bücher zu fuchsen, um eine eigene Datenbank zu erstellen. Leider hänge ich an einem Problem, bei dem ich weder im Internet noch in den Büchern etwas zur Behebung finden kann. Ich stehe noch ziemlich an Anfang im Bereich Programmierung, also falls jemand eine Lösung hat bitte nachsichtig erklären :)

Ich habe eine 1:n Beziehung erstellt zwischen meiner Tabelle "Mitarbeiter" und "Abteilungen"

Die Tabellen:

Mitarbeiter:
• MitarbeiterID
• Name
• Vorname
• AbteilungID

Abteilung:
• Abteilung ID
• Abteilungsbezeichnung
• StockwerkAbteilung

Jetzt habe ich ein Formular erstellt und habe mir bei "vorhandene Felder hinzufügen" alle Spalten der Tabelle "Mitarbeiter" auf das Formular gezogen. Zusätzlich habe ich mir aus meiner Verknüpften Tabelle die Felder "Abteilungsbezeichnung" und "StockwerkAbteilung" hinzugefügt.

Mein Ziel war es, dass wenn ich im Formular das Feld AbteilungID (aus Tabelle Mitarbeiter) auswähle, durch ein Kombinationsfeld, dass sich die Felder "Abteilungsbezeichnung" und "StockwerkAbteilung" von selbst ausfüllen und als Zusatzinformation auf dem Formular stehen.
Das hat soweit auch alles genauso funktioniert!

Jetzt zu meinem Problem!
Ich würde gerne den Mitarbeiter eintragen, ohne ihm eine Abteilung zuzuweisen, da dies zu einem späteren Zeitpunkt entschieden werden soll.
Aber leider bekomme ich immer wieder die Fehlermeldung:

"Das Microsoft Access-Datenbankmodul kann in der Tabelle keinen Datensatz mit passenden Schlüsselfeldern finden. (Fehler 3101)"

Weiß jemand wie ich den Fehler umgehen kann, damit ich den Datensatz für den Mitarbeiter anlegen kann bevor dieser Mitarbeiter anfängt in der Firma zu arbeiten und den Datensatz erst mit der Abteilung vervollständige wenn sein erster Arbeitstag ist.

Somit würde ich gerne das Feld "AbteilungID" aus der Tabelle "Mitarbeiter" vorerst leer lassen.

Ähnliche Probleme habe ich an vielen Stellen meiner Datenbank! Dies ist nur ein kleines Beispiel davon.

Ich hoffe es kann mir jemand helfen, ich verzweifle hier :(

MFG Cly

MzKlMu

Hallo,
das Feld darf in der Tabelle keinen Standardwert haben. Vermutlich steht da 0 drin und eine AbteilungID 0 gibt es ja nicht. Daher die Meldung.
Gruß
Klaus

ebs17

Das bemängelte Verhalten ist kein Fehler, sondern nötige und sinnvolle DB-Funktionalität.

Der Fehler liegt in Deiner Datenmodellierung. Da eine Abteilung mehrere Mitarbeiter haben kann/wird und Mitarbeiter auch die Abteilung wechseln werden können, ist hier eine m:n-Beziehung zu verwenden.
Damit kannst Du dann auch sowohl Mitarbeiter als auch Abteilungen separat anlegen. Die gegenseitige Zuordnung wäre dann ein weiterer Schritt => Einträge in die Zuordnungstabelle und entsprechende Formulargestaltung.
Mit freundlichem Glück Auf!

Eberhard

Clyvideo

Hallo,

ich hatte diese Umsetzung 1:1 aus dem Accessbuch übernommen. Ich habe die Lösung jedoch endlich gefunden. War sehr simpel, aber wenn man es nicht weiß, zum verrückt werden.

Ich musste sobald die Felder alle im Formular waren, die Beziehung der Abfrage im Formular ändern.

- Eigenschaften meines Formulares
- Abfrage öffnen (SQL)
- Doppelklick auf die Beziehung
- Verknüpfung von 1 auf 3 stellen

Hat mich echt viele Stunden gekostet 😞

Aber danke, dass du dir die Zeit genommen hast.

MFG Cly

MzKlMu

Juni 02, 2021, 18:42:15 #4 Letzte Bearbeitung: Juni 02, 2021, 19:08:57 von MzKlMu
Hallo,
das ist ganz sicher nicht die richtige Lösung.

Und was ist mit dem Hinweis von Eberhard ?
Gruß
Klaus