初歩的な質問ですいません。
今まで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使います。
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;
早速ありがとうございました。
実は、最近DBISAMを購入しまして基礎的な部分をTQueryで設計してから移し替えようとしていました。
ただ、微妙にメソッドが変わっていてApplyUpdateなどは無いようです。
とりあえず、TTableのときみたいにEdit;で始めてPost;したらうまくいきました。
ありがとうございます。
ツイート | ![]() |