TUpdateSQLについて

解決


take  2010-07-05 06:39:15  No: 38745

初歩的な質問ですいません。
今までTQueryをOpenCloseしながら内部SQLを書き換えて使っていたのですが、
TQueryのSelect文で接続したまま、レコードの書き換えを行いたいと思っていたのですが、TUpdateの参考文献が少なく使い方がよくわかりません。
基本的な使い方を教えてください。
よろしくお願いします。
Win2000+D7

//TEditなどの情報を書き込む
procedure TForm1.BtnAdd(Sender:TObject);
begin
  With Query do
  begin
    //キーがある場合はUpdate
    if Locate('CODE',EDIT1.text,[]) then
    begin
      UpdateSQL.Query[ukUpdate].ParamByName('CODE').AsString := EDIT1.Text;
      UpdateSQL.Query[ukUpdate].ParamByName('NAME').AsString := EDIT2.text;
      UpdateSQL.Apply(ukUpdate);
    end else
    //キーが見つからなければInsert
    begin 
      //省略
    end;
  end;
end;

削除はレコード1行でいいのでLocateで探してQuery.Delete使います。


HOta  2010-07-05 06:55:07  No: 38746

TUpdateSQLをTQueryにSetしていると思うにですが、このあと、TUpdateSQLの右クリックのメニューから、UpdateSQLの設定を選び、更新するテーブルと項目を設定します。これは、TUpdateSQLのDeleteSQL,InsertSQL,ModifySQLを設定する作業となります。これは、DeleteSQL,InsertSQL,ModifySQLのSQL文を書くのと同じ作業になります。これを設定すると、後は、普通のTQueryの操作と同じで、

  With Query do
  begin
    //キーがある場合はUpdate
    if Locate('CODE',EDIT1.text,[]) then
    begin
>      UpdateSQL.Query[ukUpdate].ParamByName('CODE').AsString := EDIT1.Text;
>      UpdateSQL.Query[ukUpdate].ParamByName('NAME').AsString := EDIT2.text;
>      UpdateSQL.Apply(ukUpdate);
      FieldByName('CODE').AsString := EDIT1.Text;
      FieldByName('NAME').AsString := EDIT2.text;
      Post;
      ApplyUpdate;
    end else
    //キーが見つからなければInsert
    begin 
      //省略
    end;
  end;


take  2010-07-05 08:03:32  No: 38747

早速ありがとうございました。

実は、最近DBISAMを購入しまして基礎的な部分をTQueryで設計してから移し替えようとしていました。
ただ、微妙にメソッドが変わっていてApplyUpdateなどは無いようです。
とりあえず、TTableのときみたいにEdit;で始めてPost;したらうまくいきました。
ありがとうございます。


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

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






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