2017-03-16 5 views
0

je besoin d'aide pour réparer mon code ...(Delphi) query.next ne fonctionne pas

J'essaie de construire une application avec ce code

Adoquery.close; 
ADOQuery1.SQL.Clear; 
ADOQuery1.SQL.Add('select * from schedule where every like ''%5%'''); 
ADOQuery1.Open; 

if not ADOQuery1.Eof then 
    begin 
    ShowMessage('hallo '+ADOQuery1.fieldbyname('remark').AsString); 
    ADOQuery1.Next; 
    end 
Else 
    Begin 
    end; 

J'ai 2 enregistrements de données pour le résultat, mais pourquoi seulement une remarque montre?

J'essaye de Tracer et ai trouvé le problème dans ADOQuery1.next. Après mon application lire ADOQuery.next, curseur de saut à

end;
pas revenir à
if not ADOQuery1.Eof then
.

Des erreurs avec mon code?

+4

Vous devez utiliser un '' while' comme sans ADOQuery1.Eof do' – RRUZ

+0

supplémentaires, vous devez également faire votre curseur pour être sur le premier enregistrement avant itérer comme ceci 'ADOQuery1 .First, ' – Fero

+2

@ Fero68, oui c'est une bonne habitude à entrer, mais inutile immédiatement après un appel à' Open'. – MartynA

Répondre

4

L'exécution ne retourne pas à l'instruction if car le code ne dit pas de le faire. Vous avez une seule instruction if et aucune itération. Vous devez itérer. Par exemple, avec une boucle while:

while not ADOQuery1.Eof do begin 
    // do something 
    ADOQuery1.Next; 
end;