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 13
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