Message d'erreur sur curseur, option de requete ont changé
Bonjour,
Régulièrement je reçois le message " Impossible de terminer l'opération de curseur car les options de requêtes ont changé depuis la déclaration du curseur".
J'utilise des AdoQuery sur base MS SQL et Delphi 7
Cela arrive quand les données sont importantes avec un temps de traitements plus ou moins long.
J'utilise des DBGrid alimenté par ces adoquery qui sont mis à jour.
J'ai désactivé le Dbgrid lors des maj., fait un dbgrid.Refresh mais rien.
Quelqu'un connait t'il sa cause et donc un remède ?
Merci d'avance.
Max
Ci-dessous un bout de mon code ou l'erreur se produit
Ci-dessous un bout de mon code ou l'erreur se produit. L'erreur se produit lors du qtmp.post.
Creation d'une table temporaire
xzone:='create table '+xnomT;
qtmp.SQL.Clear;
qtmp.sql.add(xzone);
qtmp.sql.add('(cpt integer not null primary key,');
qtmp.sql.add('ind char(1) null,');
qtmp.sql.add('ind2 int null,');
qtmp.sql.add('cptprinc char(9) null,');
qtmp.sql.add('cptsix char(9) null,'); // compte classe 6
qtmp.sql.add('debit float null,');
qtmp.sql.add('credit float null,');
....
qtmp.sql.add('archive char(15) null)');
qtmp.ExecSQL;
Ecriture dans la tadoquery :
xzone:='select * from '+xnomT;
qtmp.SQL.Clear;
qtmp.sql.add(xzone);
qtmp.Active:=true;
.................
.................
qtmp.insert;
inc(ntmp);qtmp.fieldbyname('cpt').asinteger:=ntmp;
inc(xind2);qtmp.fieldbyname('ind').asstring:='E';
qtmp.fieldbyname('ind2').asinteger:=xind2;
qtmp.fieldbyname('cptprinc').asstring:=trim(dmvalba.qba2b.fieldbyname('cptprinc').asstring);
qtmp.fieldbyname('debit').asfloat:=0;
qtmp.fieldbyname('credit').asfloat:=0;
qtmp.post;