notrica
Messages postés89Date d'inscriptionlundi 12 décembre 2005StatutMembreDernière intervention19 octobre 2013
-
12 avril 2010 à 11:25
notrica
Messages postés89Date d'inscriptionlundi 12 décembre 2005StatutMembreDernière intervention19 octobre 2013
-
29 avril 2010 à 06:24
Salut;
Je cherche comment retrouver un enregistrement précédent lorsque il y a eu une rupture de séquence d'un UPDATE dans le même fichier. Voici le code
with DMPlanet1.QPlaSolde do begin
Close;
SQL.Clear;
SQL.Add('Select * from TFPlanSolde Order By GLComptetID');
open;
First;
while not eof do begin
xclasse := LeftStr( FieldValues['GLComptetID'],1);
xcleCpte := FieldValues['GLComptetID'];
if (xClasse '1') or (xClasse '2') or (xClasse = '3') or (xClasse = '4') or (xClasse = '5') then
begin
xSoldeFc := FieldValues['SoldeFc'];
xSoldeUs := FieldValues['SoldeUs'];
end
else begin
xSoldeFc := 0;
xSoldeUs := 0;
end;
Active := false;
Sql.Clear;
Sql.Add('UPDATE TFPlanSolde ');
Sql.Add('SET ReportFc =:zReportFc, ReportUs =:ZReportUs, TotDFc =:ZmtotFC, TotDUs =:ZmtotUs, SoldeFc =:xZmtotFc, SoldeUs =:xZmtotUs');
Sql.Add('WHERE GLComptetID =:GLCpte');
Parameters.ParamByName('ZReportFc').value := xSoldeFc;
Parameters.ParamByName('ZReportUs').value := xSoldeUs;
Parameters.ParamByName('ZmtotFC').value := xSoldeFc;
Parameters.ParamByName('ZmtotUs').value := xSoldeUs;
Parameters.ParamByName('xZmtotFc').value := xSoldeFc;
Parameters.ParamByName('xZmtotUs').value := xSoldeUs;
Parameters.ParamByName('GlCpte').value := xclecpte;
ExecSql;
Next;
end;
end;
Donc, la séquence est interrompu, que doit-je faire ? De l'aide SVP, je suis bloqué.
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 26 avril 2010 à 10:56
Bonjour,
oui, mais je ne comprends pas bien.
faire une requête SQL dans une boucle ne me semble pas très logique :
on fait une requête UPDATE sur une table justement pour éviter une boucle..
Si tu es obligé de faire ume boucle alors pourquoi ne pas traiter les enregistrements modifiés sous forme d'affectations en encapsulant par
un edit et un post ?
le mélange des deux genres conduit généralement à ce type de souci..
Voila, si je met OPEN pour ouvrir le fichier après UPDATE, au lieu de continuer avec les enregistrement suivant, il rendre encore au premier enregistrement déjà traiter et sauvegardé.
C'est normal sur une ouverture la table se cale sur le premier, donc tu ne t'en sortiras pas de cette manière..
essaie toutefois d'enlever le Active := false; bien que j'ai un doute car pour un update la table doit être fermée..
notrica
Messages postés89Date d'inscriptionlundi 12 décembre 2005StatutMembreDernière intervention19 octobre 2013 23 avril 2010 à 07:26
Salut Cantador,
Merci pour votre intervention, le problème se trouve au niveau de la mise à jour "UPDATE" , lorsque il est exécuté le fichier reste fermer et la séquence est interrompu. Je ne sais pas comment faire pour poursuivre dans le traitement pcq si je réouvre encore le fichier le traitement se fait toujours sur le 1er enregistrement ça n'évolue pas.
Je cherche comment faire pour continuer dans le traitement du fichier.
notrica
Messages postés89Date d'inscriptionlundi 12 décembre 2005StatutMembreDernière intervention19 octobre 2013 23 avril 2010 à 23:03
Salut Cantador,
J'ai placer les points d'arrets le programme s'arrete au niveau de "NEXT"; avec se message d'erreur "Cannot perform this operation on a closed dataset", j'ai compris que s'etait le problème de la base ou du fichier qui est fermer et la commande NEXT ne s'execute pas.
Voila, si je met OPEN pour ouvrir le fichier après UPDATE, au lieu de continuer avec les enregistrement suivant, il rendre encore au premier enregistrement déjà traiter et sauvegardé.
Mon soucie, je cherche comment passer à l'enregistrement suivant après UPDATE.
notrica
Messages postés89Date d'inscriptionlundi 12 décembre 2005StatutMembreDernière intervention19 octobre 2013 29 avril 2010 à 06:24
Salut Cantador,
[i]Si tu es obligé de faire ume boucle alors pourquoi ne pas traiter les enregistrements modifiés sous forme d'affectations en encapsulant par
un edit et un post ?/i
OK, j'ai enlevé le UPDATE dans la boucle et remplacé par un Edit et un Post. Cela marche.
Je vous remerci beaucoup.Bonne continuité.
a+
Notrica