2017-03-16 15 views
0

を働いていないquery.next私は自分のコードを修正するための助けが必要...(デルファイ)

私は結果のために2つのデータレコードを持って、このコード

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; 

でいくつかのアプリケーションを構築しようとすると、なぜ1つの発言だけが表示されていますか?

私はそれをトレースしようとし、ADOQuery1.nextに問題が見つかりました。私のアプリケーションがADOQuery.nextを読んだ後、カーソルは

end;
にジャンプし、
if not ADOQuery1.Eof then
に戻りません。

私のコードに間違いがありますか?

+4

あなたが使用する必要があります 'while'のような'ないADOQuery1.Eof do' – RRUZ

+0

追加しながら、あなたもこの 'ADOQuery1のように反復する前に、最初のレコード上にあるように、あなたのカーソルをしなければなりません.First; ' – Fero

+2

@ Fero68、はい、それに入る良い習慣ですが、' Open'を呼び出した直後は不要です。 – MartynA

答えて

4

実行がifステートメントに戻ることはありません。 if文は1つで、繰り返しはありません。あなたは反復する必要があります。 whileループ付きインスタンスの場合:

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