Autor Beitrag
Bitburki
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Di 12.12.06 10:09 
Hi,

ich verzweifel hier grad.
Habe eine ADO-Verknüpfung zu einer Accessdatei. Spalte ID hat Eigenschaft AutoWert.
Ich bin davon ausgegangen, daß wenn ich eine Adotab.insert; mache automatisch ein neuer WErt vergeben wird (oder spätestens beim Post).
Jetzt kommt aber beim Post die Fehlermeldung: "Null-Wert in Index oder Primärschlüssel nicht möglich"
Was mache ich falsch?

Gruß Bitburki
NTM
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 120

Win XP
2005 Prof
BeitragVerfasst: Di 12.12.06 10:15 
Ich könnte jetzt erstmal nur Raten aber wie es aussieht willst du einen Wert im Feld Id eingeben und das geht nicht.
Bitburki Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Di 12.12.06 10:56 
Nein, das will ich nicht...
Als erstes drücke ich einen "Neu" Button und machen einen "Adotab.insert;"
Ich habe mir alle Felder die sonst noch in der Tabelle sind (außer ID), mit DBEditfeldern verknüpft.
Diese befülle ich in einer Maske. Ist dies passiert, drücke ich auf meinen Speichernbutton der lediglich ausführt "Adotab.post;"
Dann kommt die Exception mit der genannten Meldung.
Habe auch im ID Feld die Eigenschaften "AutogenerateValue" mal alle durchprobiert, nichts.
Habe dann auch mal das Feld "ID" auf die Maske gelegt (DBEdit) und hier wird in der Tat nicht vergeben wenn ich auf "Neu" klicke. Beim Post macht ers dann anscheinend auch nicht.
Was kann ich hier nur vergessen haben?
NTM
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 120

Win XP
2005 Prof
BeitragVerfasst: Di 12.12.06 11:19 
Mach doch mal Bitte ein Screenshot von der Sache.
Bitburki Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Di 12.12.06 11:30 
bitteschön
Einloggen, um Attachments anzusehen!
NTM
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 120

Win XP
2005 Prof
BeitragVerfasst: Di 12.12.06 11:34 
Sorry mein Fehler ich meine vom Source Code und wenn es geht in etwa dort wo der Fehler auftritt.
Bitburki Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Di 12.12.06 11:41 
Ich mache im Sourcecode nicht mehr als ich schon geschrieben habe:
AdoTab_erf.insert;
ADOTab_erf.FieldByName('Datum').AsDateTime:= datum.Date;
// Jetzt speichern
AdoTab_erf.Post;


Und bei der Anweisung:
"AdoTab_erf.Post;"
kommt die Exception.

Da siehste im Screenshot auch nicht mehr...
NTM
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 120

Win XP
2005 Prof
BeitragVerfasst: Di 12.12.06 11:55 
Kommen alle Information aus einer oder mehrere Tabellen?.
Bitburki Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Di 12.12.06 12:07 
später mal aus mehreren Tabellen.
Um den Fehler einzugrenzen, habe ich mich aber vorerst auf eine Tabelle beschränkt um Fehler einzugrenzen.
Theoretisch praktisch müßte doch der Autowert gleich beim INSERT neu ermittelt werden... Wird er aber so wie es aussieht nicht
NTM
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 120

Win XP
2005 Prof
BeitragVerfasst: Di 12.12.06 12:21 
Versuche es mal Edit anstatt Insert .
Glaube ich?. :-)
Bitburki Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Di 12.12.06 12:44 
Leider nein. Gleiche Meldung.
Habs auch probiert mit, zuerst INSERT und dann EDIT...
Die Fehlermeldung beim POST bleibt die gleice :-((
NTM
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 120

Win XP
2005 Prof
BeitragVerfasst: Di 12.12.06 12:50 
Hast du evtl. Pfichtfelder in der Datenbank eingeben?.
OlafSt
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 486
Erhaltene Danke: 99

Win7, Win81, Win10
Tokyo, VS2017
BeitragVerfasst: Di 12.12.06 12:54 
Versuch mal Append anstatt Insert. Ich hab so das blöde Gefühl, das Insert nicht auf den Index achtet beim Einfügen eines leeren Datensatzes. Das geht schief bei Access und Primary Keys...

Append dagegen macht erstmal nix - bis zum Post-Statement.

_________________
Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
Bitburki Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 28



BeitragVerfasst: Di 12.12.06 13:35 
Zu allererst: ES GEHT!!! Ich drück hier auf n Knop und es GEHT!
So. Vielen Dank für die Hilfe.
Vielleicht hab ich eine entscheidende Info vergessen.
Ich habe das Feld ID mit AutoWert gekennzeichnet, und war der Meinung das das nicht automatisch hochgezählt wird.
Es waren aber noch 4 andere Felder als KEY gekennzeichnet, welche ich nicht gefüllt hatte.
Habe jetzt als erstes mal nur ID als Key genommen und siehe da, es geht!
Ist es überhaupt notwendig mehrere Keys zu definieren wenn ID sowieso schon eindeutig genug ist?

Am Insert oder Edit, Append lag es nicht. Ein einfach Insert bei Button NEU und ein POST beim SICHERN langt.
NTM
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 120

Win XP
2005 Prof
BeitragVerfasst: Di 12.12.06 13:41 
Wenn die Tabellen untereinander verbunden sind würde ich dir Raten nur einmal denn schlüssel zu vergeben.