PDA

Vollständige Version anzeigen : A00 neue Tabelle (datenfelder) in vorhandenem Formular, fehler Primärschlüssel


Stefan (Newbie)
25.10.2003, 00:22
Hallo, alle miteinander,

Problem: Access 2000 Datenbank erstellt, im nachherein neue Tabelle eingefügt, Datenfelder im bereits vorhanden Formular eingefügt, Verknüpfungen wie bei den anderen Datenfeldern/Tabellen vorgenommen, möchte Datensatz jetzt durch die neuen Datenfelder aktualisieren/eingeben,-----Fehler----- Primärschlüssel den ich eingebe als erstes im Formular wird zur null, obwohl er längst vorhanden und gespeichert war. Aus der 0 die richtige Nummer machen funktioniert nicht, er beendet dann das Formular und die letzten eingaben kann ich vergessen.

wäre toll, wenn mir jemand behilflich sein könnte.



(p.s. wenn ich die neuen Datenfelder in eine bereits vorhandene Tabelle einfüge, funktioniert alles einwandfrei. :cool: )

Kennt einer von euch trotzdem eine Lösung, ich würde schon gerne eine neue Tabelle einfügen, nicht immer andere auffüllen.

Vielen Dank im voraus :))

Johnny Loser
25.10.2003, 09:05
So richtig klar ist mir nicht, was Du da machst.

Was ich verstehe:

Du hast ein Formular (z.B. Formular1), welches gebunden ist an eine Tabelle (z.B. Datenherkunft: Tabelle1)

Nun erstellst Du eine neue Tabelle (z.B. Tabelle2) und möchtest von dieser auch im Formular1 die Felder einbinden?!?

Wenn dem tatsächlich so ist, wird dies nicht funtionieren, da einem Formular als Datenherkunft nur EINE Tabelle/Abfrage zugrundeliegen kann.

Stehen denn Tabelle1 und Tabelle2 in einer Beziehung zueinander?
Falls ja könntest Du diese in einer Abfrage verknüpfen und diese als Datenherkunft verwenden...

Stefan (Newbie)
25.10.2003, 10:01
Ich habe folgende Tabellen:
Mastertabelle= Personal : Personalnummer als Primärschlüssel, wobei ich ihn aber selber als erstes im Formular vergebe, dieser soll bei allen anderen Tabellen als Identifikation dienen. Also habe ich das Feld Personalnummer als erstes Datenfeld in jeder weiteren Detailtabelle eingegeben und jeweils als Primärschlüssel angelegt. Primärschlüssel ist als Ja ohne Duplikate deklariert und alle Verbindungen sind auf einer 1:n mit referentieller Integrität und Löschweitergabe an Detaildatensatz deklariert, wobei er auf der Übersicht die Tabellen jeweils mit einer 1 am ende und anfang der Verknüpfung aufweist.

Der Fehler trat auch erst auf , nachdem ich das Formular erweitern wollte, d.h. das ich am Anfang drei Tabellen hatte die ins Formular eingebunden hatte und dann nachträglich nochmal 7 weitere Tabellen erstellt habe und diese in das bereits vorhandene Formular integrieren wollte. Da passiert es, sobald ich in eins dieser Datenfelder einen Wert eingebe und ich den mit enter oder Tabulator bestätige, wird aus allen Feldern Personalnummer plötzlich eine null.

Ich hoffe, mein problem ist jetzt besser erkennbar.

Wenn ich eine Abfrage erstelle und diese mit dem Formular verknüpfe passiert genau dasselbe.
Wenn ich allerdings die Datensätze von den neuen Tabellen in die alten Tabellen übertrage und die neuen Tabellen lösche, funktioniert alles einwandfrei. Anscheinend sollte ich einfach nur eine Tabelle mit 100 Datenfenldern erstellen, aber dann wäre ja der Sinn verfehlt oder?

Gruß Stefan

Johnny Loser
25.10.2003, 10:29
Also habe ich das Feld Personalnummer als erstes Datenfeld in jeder weiteren Detailtabelle eingegeben und jeweils als Primärschlüssel angelegt. Primärschlüssel ist als Ja ohne Duplikate deklariert und alle Verbindungen sind auf einer 1:n mit referentieller Integrität und Löschweitergabe an Detaildatensatz deklariert, wobei er auf der Übersicht die Tabellen jeweils mit einer 1 am ende und anfang der Verknüpfung aufweist.
Wenn ich Dich recht verstehe, ist das Feld Personalnummer in jeder Detailtabelle als Eindeutig "ohne Duplikate" indiziert?!?
In diesem Fall hast Du immer eine 1:1-Beziehung zwischen den Tabellen...

...d.h. das ich am Anfang drei Tabellen hatte die ins Formular eingebunden hatte...
Wie hast Du diese eingebunden? Ich vermute mal Du hast Unterformulare erstellt?!?

Ich biete Dir an, mir die DB mal anzusehen; meine email findest Du unten unter meinem Namen...

Stefan (Newbie)
25.10.2003, 10:48
Genau: es herrscht eine 1:1 Beziehung zwischen der Master und den Detailtabellen. Obwohl ich den Verknüpfungstyp nummer zwei gewählt habe.

Wenn ich dich richtig verstehe, muß ich also bei den Primärschlüsseln angeben "mit duplikate", weil sich ansonsten wenn der selbe Schlüssel in der Master und ein, zwei Detailtabellen auftaucht gegenseitig aufhebt, ist dieses richtig? Also beschränkt sich dieses Feld "indiziert" in Verbíndung "ohne Duplikate" oder "mit Duplikate" nicht auf die Datensätze untereinander sondern schon im eigentlichen Datensatz.

Tabelle Personal Tabelle Adresse
Personalnummer Personalnummer "Fehler wegen dem selben Wert"

und nicht so wie ich gedacht habe
Datensatz 1 mit datensatz 2 , wenn da die selbe Personalnummer auftaucht reagiert erst das Programm auf einen Fehler.

Verstehe ich das so richtig

Gruß Stefan

Stefan (Newbie)
25.10.2003, 11:22
Ich habe mir jetzt nochmal mehere Beispieldatenbanken angeschaut.

Wenn ich das jetzt richtig sehe, habe ich eine großen Fehler gemacht.

Sollte es etwa in der Regel so sein:

Tabelle Personal:
Personalnummer (Primärschl.)
Name
Vorname
Adresse 1

Tabelle Adresse 1:
Personalnummer (nicht die beiden Personalnummern verknüpfen)
Strasse u. Hausnummer
PLZ Wohnort
ID Adresse 1 Primärschlüssel(ID aus Tabelle Adresse 1 ist verknüpft mit Adresse 1 aus Tabelle Personal)

Gruß Stefan

Johnny Loser
25.10.2003, 11:44
Hi Stefan,

in einer Haupttabelle gibt es ein Feld Personalnummer, welches ohne Duplikate deklariert ist. Hierdurch kann es jede PN nur einmal geben.

In Deinen Detailtabellen sollte die PN mit Duplikaten deklariert werden, wenn es zu jedem Datensatz in der Haupttabelle mehrere Datensätze pro Detailtabelle geben soll/darf.

Dies bietet die Möglichkeit für eine 1:n-Beziehung

Darf es in einer Detailtabelle nur einen Datensatz pro PN geben, muß das Feld PN ohne Duplikate deklariert werden.

Dies bietet die Möglichkeit für eine 1:1-Beziehung


Im Beziehungsfenster legst Du dann die Beziehungen fest, wobei ich es persönich für gefährlich halte die Löschweitergabe zu aktivieren. Ein versehentliches Löschen eines Datensatzes in der Haupttabelle löscht automatisch alle Details, wodurch die Daten verloren gehen.

Stefan (Newbie)
25.10.2003, 11:54
:D :D :D :D :D
Du hast mir sehr weitergeholfen, funzt prima und gut das du mich nochmal auf die Löschweitergabe hingewiesen hast, die hätte ich beinahe vergessen auszuschalten.

Ich hoffe ich kann Dir irgendwann mal behilflich sein.

Viel Spaß noch

Gruß Stefan