Moin,
über die Transaction der Interbase wickelst du alles ab, was von oder zur Interbase geschickt wird. Sie bildet also die Verbindung zwischen einer Kompo (IBStoredProc, IBDataSet usw.) und der Interbase.
Zitat:
Aber was Transaktionen sind und wie man sie benutzt ist mir äusserst suspekt.
Nehmen wir an du hast eine
Query zum lesen der Daten und eine StoredProc zum schreiben der Daten, dann brauchst Du also eine IBQuery-Kompo, eine IBStoredProc und eine Transaction. Dann brauchst Du nur bei der
Query und der StProc die Database und die dazugehörige Transaction auswählen. Bei der Transaction wählst Du nur noch die Database aus.
Bevor du Daten an die
IB schickst must Du also ersteinmal die Transaction öffen und wenn das fertig ist, die Transaction wieder schließen.
Code:
//zum lesen
If Not IBTrans.InTransaction Then
IBTrans.startTransaction //startet die Transaktion
Try
With Query1 Do
Begin
open; //Wenn es mit Parameter erfolgt, dann schiebe ich das immer in ne extra Procedure
Edit1.Text:= Field[0].AsString;
...
...
end;
except;
IBTrans.Rollback //verwirft das Ergebnismenge
end;
IBTrans.Commit; //schließt die Transaction
end;
Zitat:
Braucht man pro Database nur eine oder mehrere??
Rein theoretisch sollte das gehen aber es ist nicht empfehlenswert, da du ja so die Funktionen der Transaction entweder selber steuern oder darauf verzichten mustest. Ich nehme gerne immer eine Transaction zum Lesen und eine andere zum schreiben.