Retrouver un enregistrement en cas de rupture de séquence

Résolu
notrica
Messages postés
89
Date d'inscription
lundi 12 décembre 2005
Statut
Membre
Dernière intervention
19 octobre 2013
- 12 avril 2010 à 11:25
notrica
Messages postés
89
Date d'inscription
lundi 12 décembre 2005
Statut
Membre
Dernière intervention
19 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é.

d'avance Merci.
a+
Notrica

8 réponses

cs_cantador
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
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..

cantador
3