Autor Beitrag
Xong
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 113

WIN 2000
Borland Developer Studio 2006
BeitragVerfasst: Mo 04.02.08 10:11 
Hallo,
ich arbeite mit zwei MSSQL-Tabellen. Die eine (Tabelle DATEN) enthält u.a. die Spalte IDNR, welche die Identitätsspalte ist.
Die zweite Tabelle (Tabelle DATENZUSATZ) enthält einen Fremdschlüssel, der auf diese IDNR verweist. Auch dieser ist die Identitätsspalte (also eine 1:1-Relation).

Möchte ich in meinem Programm allerdings einen Wert in DATENZUSATZ mithilfe der Post-Methode einer TADODataSet-Komponente ändern, kommt folgende Fehlermeldung: "Nicht genügend Schlüsselfeldinformationen zum Aktualisieren".

Datensätze in der Tabelle DATEN werden ohne Fehlermeldung übernommen.

Führe ich das UPDATE von Hand aus, funktioniert alles ohne Probleme.

Ich nehme an, dass dies ein Bug der ADO-Komponenten ist. Allerdings ist es ja auch möglich, dass ich einen Fehler mache.

Weiß jemand, wie ich den Fehler möglichst einfach verhindern kann?
Oder muss ich das UPDATE wirklich explizit ausführen?


Ich hoffe, ich konnte mein Problem deutlich machen.

So long,
Xong
Erichgue
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 86

Win XP/2000/7
TurboPacal 7.0; Delphi 2/5/7; BDS 2006/2010/XE6; C#; MSSQl 2000
BeitragVerfasst: Mo 04.02.08 11:00 
Titel: Re: Nicht genügend Schlüsselfeldinformationen zum Aktualisie
user profile iconXong hat folgendes geschrieben:
Hallo,
ich arbeite mit zwei MSSQL-Tabellen. Die eine (Tabelle DATEN) enthält u.a. die Spalte IDNR, welche die Identitätsspalte ist.
Die zweite Tabelle (Tabelle DATENZUSATZ) enthält einen Fremdschlüssel, der auf diese IDNR verweist. Auch dieser ist die Identitätsspalte (also eine 1:1-Relation).

Möchte ich in meinem Programm allerdings einen Wert in DATENZUSATZ mithilfe der Post-Methode einer TADODataSet-Komponente ändern, kommt folgende Fehlermeldung: "Nicht genügend Schlüsselfeldinformationen zum Aktualisieren".

Datensätze in der Tabelle DATEN werden ohne Fehlermeldung übernommen.

Führe ich das UPDATE von Hand aus, funktioniert alles ohne Probleme.

Ich nehme an, dass dies ein Bug der ADO-Komponenten ist. Allerdings ist es ja auch möglich, dass ich einen Fehler mache.

Weiß jemand, wie ich den Fehler möglichst einfach verhindern kann?
Oder muss ich das UPDATE wirklich explizit ausführen?


Ich hoffe, ich konnte mein Problem deutlich machen.

So long,
Xong


Hallo,
in der Tat kann es sich hier um einen AdO-Fehler handeln.
Ich hatte das gleiche Problem, und habe nach langem suchen einen Thread gefunden, der eben aussagt, das ADO zwar die Zeilen aktualisiert, aber nach dem neu Einlesen der Zeilen den Bezug nicht mehr herstellen kann.
Warum das so ist, und ob deine(!) Daten dadurch inkonsistent werden weiß ich nicht.
Ich habe bei mir ein Try-Except drüber gelegt, und alles läuft seit Jaren wunderbar.

Sieh mal nach, ob trotz Fehlermeldung, deine Daten richtig in der MS-Datenbank stehen.


Erich
Xong Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 113

WIN 2000
Borland Developer Studio 2006
BeitragVerfasst: Mo 04.02.08 11:22 
Mit try-except kommt keine Fehlermeldung mehr, aber die Daten stehen leider nicht in der Datenbank.

Ich werde wohl den SQL-Code von Hand schreiben müssen. Ist zwar etwas mehr Arbeit, aber die ist auch noch zu verkraften!

Danke für deine Hilfe.