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
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.
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.
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
Hallo,
das ist ganz sicher nicht die richtige Lösung.
Und was ist mit dem Hinweis von Eberhard ?