TIBTransaction déclenche une exception

Résolu
vincentstryckmans Messages postés 228 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 25 octobre 2006 - 23 nov. 2005 à 13:35
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 - 24 nov. 2005 à 18:23
Bonjour,



Je lis le contenu d'une table (Interbase) via un TIBDataset avec le code suivant :

with dmInciBase.sq_resp_avis do

begin

with SelectSQL do

begin

clear;

add('select * from resp_incident where lnk_avis = ' + IntToStr(id_cur_avis));

end; // with SelectSQL do

open;

while not eof do

begin

// ... transfert des valeurs de champ dans une array dynamique

next;

end; // while not eof do

close;

end; // with dmInciBase.sq_resp_avis do



Le dataset a un BeforeOpen event pour démarrer sa transaction :

procedure TdmInciBase.sq_resp_avisBeforeOpen(DataSet: TDataSet);

begin

if not it_sq_resp_avis.InTransaction then it_sq_resp_avis.StartTransaction;

end;

Un event AfterClose va faire un commit de la transaction.



Mon problème est le suivant : à la deuxième ou troisième lecture de mon dataset, j'ai des déclenchements d'exception :



soit EAccessviolation juste après le 'Starttransaction'

soit EInvalidpointer jutse après que le 'open' du dataset soit exécuter



Je ne comprends rien ????

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans.

4 réponses

vincentstryckmans Messages postés 228 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 25 octobre 2006
23 nov. 2005 à 14:33
En fait, les exceptions n'ont strictement rien à voir avec la
transaction ou le dataset mais avec l'arry dynamique dans laquelle
j'assigne les valeurs de la table.

La valeur d'indice que je donnais à l'array était supérieur à celui de la taille de l'array. Bref plantage.



Cependant je ne comprend pas pourquoi l'exception est déclenché 3 ou 4 lignes avant celle de l'erreur. Mystère

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans.
3
vincentstryckmans Messages postés 228 Date d'inscription lundi 5 avril 2004 Statut Membre Dernière intervention 25 octobre 2006
24 nov. 2005 à 07:51
Henry Ford disait que l'expérience est le nom que l'homme donne à la somme de toutes ces erreurs.



Et bien, je crois que mon expérience vient encore de grandir.



Merci à toi Delphiprog

Et comme disait ma grand-mère : il y a toujours du soleil derrière les nuages.

Vincent Stryckmans.
3
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
23 nov. 2005 à 22:33
Question bête : quel est l'intérêt de démarrer une transaction de le
cas d'une requête SELECT ? Et le Commit, il sert à quoi dans ton cas ?

<hr color="#008000">Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.croix-rouge.fr/index/partner_campagne.html
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
24 nov. 2005 à 18:23
Tu as failli me faire douter... Sacré Vincent !

<hr color="#008000">Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
http://www.croix-rouge.fr/index/partner_campagne.html
0
Rejoignez-nous