while中での内容更新

解決


よしむね  2004-12-18 00:19:54  No: 12351

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;

よりしくお願いします。*所々省略させていただきました。


村正  2004-12-18 00:42:47  No: 12352

D6_PEなので、見当違いかもしれませんが、
いくつか質問いたします。

Query1.SQL.Add('update  ファイル set 日付='e');
の「ファイル」はテーブル名なのですか。

ココの部分('update  ファイル set 日付='e')は、
'update  ファイル set 日付=e'なのではないでしょうか。


村正  2004-12-18 00:45:38  No: 12353

Query1.Close;
上記にて閉じてますけど、これでいいのですか。


HOta  2004-12-18 01:01:06  No: 12354

While Not Query1.Eof do
の中でCloseしたら、意味がなくなります。別のTQueryを用意して
Updateしないとだめでしょう。


よしむね  2004-12-18 01:03:38  No: 12355

ご指摘いただいた件ですが

1)+を追加するのを忘れてしまいました。
Query1.SQL.Add('update  ファイル set 日付='+E+'');
2)そうですよね下記のロジックは必要ないですよね。
Query1.Close

たびたびすみませんが簡単で効率のいいやり方を教えて頂ければと思いす。


AY  2004-12-18 01:30:36  No: 12356

省略されているとの事ですので、違うかもしれませんが
ソースを見る限り、ファイルを無条件にSELECTして更新したい意図に
見えます。
そうであれば、オープンしてEOFになるまで処理ではなく
         Query1.Close;
         Query1.SQL.Clear;
         Query1.SQL.Add('update  ファイル set 日付='e');
*'e'の意味は不明ですが
         Query1.ExecSQL;
で、無条件にファイルの日付が一括で更新されますよ。
したいことと違ってますかね?


AY  2004-12-18 01:33:34  No: 12357

>日付='+E+''
Eは変数ですか?  後ろの+''はいらないのでは?


通りすがり  2004-12-18 01:39:19  No: 12358

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;
では、だめっすか?


よしむね  2004-12-18 02:41:27  No: 12359

村正さん・HOtaさん・AYさん・通りすがりさん
----------------------------------------------------
大変有難うございました。
皆さんのおかけで解決することができました。
これからもよろしくお願いします。


よしむね  2004-12-18 02:42:00  No: 12360

追記
本当に有難うございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加