Hi
Ich möchte in meinem Programm eine Transaktionsüberwachung. Das heisst beim löschen von mehreren Datensätzen werden entweder alle gelöscht oder wenn ein Fehler auftritt wird wieder der alte zustand hergestellt.
Ich habe das folgendermassen gelöst:
tNote->Database->TransIsolation=tiDirtyRead;<br>
tNote->Database->StartTransaction();<br>
try<br>
{<br>
qSQLDelete->Close();<br>
qSQLDelete->SQL->Clear();<br>
qSQLDelete->SQL->Add("DELETE FROM Note WHERE(StudentID=26)");<br>
qSQLDelete->ExecSQL();<br><br>
tNote->Database->Commit();<br>
}<br>
catch(EDBEngineError& e)<br>
{<br>
tNote->Database->Rollback();<br>
}<br>
Das Problem ist wenn ein Fehler beim Löschen auftritt, wird der Rollback() gestartet, der aber mit folgender Fehlermeldung abbricht:
Fehler<br>
Im Projekt Zeugnismanager.exe ist eine Exception der Klasse EDBEngineError aufgetreten. Meldung: 'Für das Feld ist ein Wert erforderlich.<br>
Feld<br>
Feld: ìììììììììììì`. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.<br>
Weis jemand was ich falsch mache?
Für Hilfe bin ich euch im voraus sehr dankbar.
Mfg
Marco Vergari
Ich möchte in meinem Programm eine Transaktionsüberwachung. Das heisst beim löschen von mehreren Datensätzen werden entweder alle gelöscht oder wenn ein Fehler auftritt wird wieder der alte zustand hergestellt.
Ich habe das folgendermassen gelöst:
tNote->Database->TransIsolation=tiDirtyRead;<br>
tNote->Database->StartTransaction();<br>
try<br>
{<br>
qSQLDelete->Close();<br>
qSQLDelete->SQL->Clear();<br>
qSQLDelete->SQL->Add("DELETE FROM Note WHERE(StudentID=26)");<br>
qSQLDelete->ExecSQL();<br><br>
tNote->Database->Commit();<br>
}<br>
catch(EDBEngineError& e)<br>
{<br>
tNote->Database->Rollback();<br>
}<br>
Das Problem ist wenn ein Fehler beim Löschen auftritt, wird der Rollback() gestartet, der aber mit folgender Fehlermeldung abbricht:
Fehler<br>
Im Projekt Zeugnismanager.exe ist eine Exception der Klasse EDBEngineError aufgetreten. Meldung: 'Für das Feld ist ein Wert erforderlich.<br>
Feld<br>
Feld: ìììììììììììì`. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.<br>
Weis jemand was ich falsch mache?
Für Hilfe bin ich euch im voraus sehr dankbar.
Mfg
Marco Vergari
Comment