Bonjour

Dans une boucle While j exécute une requête sur une date, si le nombre de résultat est 0 alors je fais un goto vers une partie du code qui ajoute un jour à la date recherchée.
Selon ma logique cela fonctionnerait mais le compilateur n est pas du même avis que moi.
Je précise que j utilise GOTO parce que je débute totalement en Delphi et que j'ai le souvenir du basic amstrad et que depuis cette date je n ai jamais essayé de programmer...


J ai le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
 with form1.qry do
  begin
 
  while iTemp < 1 do 
    begin
      Req := 'ma requete contenant Jour_Cherche';
      sql.clear();
      sql.Add(Req);
      try
        Open();
        if RowsAffected = 0 then
        begin
          goto SuiteBoucle;
        end;
        sTemp := fieldbyname('Ladate').AsString;
      except
        result := false;
        exit;
      end;
 
    SuiteBoucle:
      Jour_Cherche := incday(Jour_Cherche, 1);
      inc(iTemp);
    end;
End;
A la compilation il affiche le message d erreur suivant :
'GOTO SuiteBoucle' conduit dans ou hors d'une instruction TRY, ou hors d'une instruction FOR-IN dont l'énumérateur a un destructeur

Si je comprends bien dans mon cas précisément, cela fait sortir de la boucle ? Alors comment conserver un goto dans une boucle while ?

Donc ma question est la suivante :
Comment procéder en sachant que je fais une suite de requêtes du même type et que chaque fois que le résultat est nul je souhaite ne pas exécuter les requêtes suivantes.
Je pourrais mettre un boolean et le tester à chaque nouvelle requête mais j essaie d'apprendre à coder proprement et je trouve cette façon de procéder plus tôt 'simpliste' alors que le goto me donnait l impression d un code plus propre.
merci de vos conseils