Les transactions avec TIBDatabase et TIBSQL
Bonjour,
Dans mon formulaire , j'ai un composant TIBDatabase et un composant TIBSQL qui sont associés á un même composant TIBTransaction.
Le composant TIBDatabase alimente un TDBGrid avec le contenu d'une table et le composant TIBSQL me sert à faire des insertions sur cette même table. Le SGBD utilisé est Firebird.
Les transactions du composant TIBDatabase sont gérées automatiquement alors que pour le composant TIBSQL, j'initie et ferme mes transactions selon le modèle ci-dessous :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
FRM_Login.OuvrirTransaction(IBSQL_cadastro.Transaction);
try
IBSQL_cadastro.SQL.Clear;
IBSQL_cadastro.SQL.Append('insert into CATEGORIAS (CAT_ID, CAT_NOME, CAT_DTCAD) ');
IBSQL_cadastro.SQL.Append('select max(CAT_ID)+1, :nome, cast(''TODAY'' AS DATE) from CATEGORIAS');
IBSQL_cadastro.ParamByName('nome').AsString := Edit_novaCat.Text;
IBSQL_cadastro.ExecQuery;
IBSQL_cadastro.Close;
IBSQL_cadastro.Transaction.Commit;
except on E: Exception do IBSQL_cadastro.Transaction.Rollback;
end; |
Le pb est le suivant :
Je modifie un champs dans le TDBGrid (TIBDatabase) et ensuite je fais une insertion (TIBSQL).
Si l'insertion génére une erreur, cela exécute un Rollback. Jusqu'ici tout va bien mais le problème est que le Rollback de la transition du TIBSQL supprime la modification que j'ai faite dans le TDBGridet qui est dans la transaction du TIBDatabase.
N'y a-t-il pas un moyen de contrôler toutes les transactions 100% par le code et non pas par les composants ?
Cyril.