whileの中でUPDATEを考えており下記のロジックでは上手く動かない
ためご伝授よろしくお願いします。
(Whileを流している際、同じデータベースでの呼出し・更新処理)
Delphi5
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select 年月日 from ファイル');
Query1.Open;
begin
i := 1;
Query1.First;
while not Query1.eof do
begin
e:=今日の日付-年月日
i := i + 1;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('update ファイル set 日付='e');
Query1.ExecSQL;
Query1.Next;
end;
Query1.First;
end;
よりしくお願いします。*所々省略させていただきました。
D6_PEなので、見当違いかもしれませんが、
いくつか質問いたします。
Query1.SQL.Add('update ファイル set 日付='e');
の「ファイル」はテーブル名なのですか。
ココの部分('update ファイル set 日付='e')は、
'update ファイル set 日付=e'なのではないでしょうか。
Query1.Close;
上記にて閉じてますけど、これでいいのですか。
While Not Query1.Eof do
の中でCloseしたら、意味がなくなります。別のTQueryを用意して
Updateしないとだめでしょう。
ご指摘いただいた件ですが
1)+を追加するのを忘れてしまいました。
Query1.SQL.Add('update ファイル set 日付='+E+'');
2)そうですよね下記のロジックは必要ないですよね。
Query1.Close
たびたびすみませんが簡単で効率のいいやり方を教えて頂ければと思いす。
省略されているとの事ですので、違うかもしれませんが
ソースを見る限り、ファイルを無条件にSELECTして更新したい意図に
見えます。
そうであれば、オープンしてEOFになるまで処理ではなく
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('update ファイル set 日付='e');
*'e'の意味は不明ですが
Query1.ExecSQL;
で、無条件にファイルの日付が一括で更新されますよ。
したいことと違ってますかね?
>日付='+E+''
Eは変数ですか? 後ろの+''はいらないのでは?
with Table1 do begin
Open;
while not EOF do begin
if FieldByName('年月日').IsNull then Continue;
Edit;
FieldByName('日付').AsDateTime :=
Today-FieldByName('年月日').AsDateTime;
Post;
Next;
end;
Close;
end;
では、だめっすか?
村正さん・HOtaさん・AYさん・通りすがりさん
----------------------------------------------------
大変有難うございました。
皆さんのおかけで解決することができました。
これからもよろしくお願いします。
追記
本当に有難うございました。
ツイート | ![]() |