Hallo,
wer weiß Rat ?
Ich habe einen Effekt den ich mir nicht mehr erklären kann.
Equipment: NT 4.0, Delphi 4, Interbase 5.1.1
Es wird über eine TTable-Komponente per "Table.Insert" und "Table.Post" ein Datensatz in die Datei (lokal auf Rechner) geschrieben.
Der Satz wird korrekt gespeichert, es erfolgt von der BDE dennoch die Exception "DBEngine Error - record key deleted".
Die eindeutige ID (Integer) des Datensatzes wird "vor dem Posten" im Ereignis OnNewRecord gebildet. Diese wird mittels einer Stored Procedure (Auslesen eines Generators) ermittelt.
Die Literatur besagt, daß die BDE von Delphi unmittelbar nach dem Posten den Satz zur Kontrolle noch einmal einliest. Falls sie diesen vom Server nicht zurückerhält, wird die Meldung "record key deleted" abgesetzt.
Die Meldung tritt mit Recht auf, falls ein Trigger in der Datenbank die ID geändert hat und die BDE davon nichts weiß, daher auch der Satz richtigerweise nicht zurückgegeben wird.
In meinem Fall wird jedoch die ID bereits vor dem Posten eingesetzt, so daß der Trigger nicht feuert (wird kontrolliert, da dieser testweise die Meldung "fired" ausgibt).
Der Datensatz wird unter Zuhilfename der BDE vollständig ausgefüllt geposted. Genau so wird er auch gespeichert und kann gelesen werden.
Trotzdem meldet die BDE "record key deleted"
Die Profis sind gefragt - ich finde keine Erklärung mehr.
Grüsse
Helmut
wer weiß Rat ?
Ich habe einen Effekt den ich mir nicht mehr erklären kann.
Equipment: NT 4.0, Delphi 4, Interbase 5.1.1
Es wird über eine TTable-Komponente per "Table.Insert" und "Table.Post" ein Datensatz in die Datei (lokal auf Rechner) geschrieben.
Der Satz wird korrekt gespeichert, es erfolgt von der BDE dennoch die Exception "DBEngine Error - record key deleted".
Die eindeutige ID (Integer) des Datensatzes wird "vor dem Posten" im Ereignis OnNewRecord gebildet. Diese wird mittels einer Stored Procedure (Auslesen eines Generators) ermittelt.
Die Literatur besagt, daß die BDE von Delphi unmittelbar nach dem Posten den Satz zur Kontrolle noch einmal einliest. Falls sie diesen vom Server nicht zurückerhält, wird die Meldung "record key deleted" abgesetzt.
Die Meldung tritt mit Recht auf, falls ein Trigger in der Datenbank die ID geändert hat und die BDE davon nichts weiß, daher auch der Satz richtigerweise nicht zurückgegeben wird.
In meinem Fall wird jedoch die ID bereits vor dem Posten eingesetzt, so daß der Trigger nicht feuert (wird kontrolliert, da dieser testweise die Meldung "fired" ausgibt).
Der Datensatz wird unter Zuhilfename der BDE vollständig ausgefüllt geposted. Genau so wird er auch gespeichert und kann gelesen werden.
Trotzdem meldet die BDE "record key deleted"
Die Profis sind gefragt - ich finde keine Erklärung mehr.
Grüsse
Helmut
Comment