UpDateSQLにパラメータを渡すには?

解決


印刷屋  2008-01-22 23:03:30  No: 29437  IP: 192.*.*.*

今までは、QueryやIBQueryにInsert文等を渡して、Query自体にParamByNameで変数を渡していたのですが、都合によりUpDateSQL、IBUpDateSQLを使うことにしました。
UpDateSQL内の各SQL文に変数を渡すには、どうすればよいのでしょうか?

//Insert Into COMPANY (KEYCODE,COMNAME) Values(:KEYCODE,:COMNAME)
IBQuery.Add('SELECT * FROM COMPANY');
IBQuery.Open;
for cnt := 1 to EndCnt do
begin
//ここで繰り返しでレコードを追加(or編集)を続けるつもり
IBUpDateSQL.Apply(ukInsert);
end;
IBQuery.Close;

編集 削除
もしかして、  2008-01-23 09:57:34  No: 29438  IP: 192.*.*.*

全く別のシステムだけど、こんな感じだったかな...(不安)

begin
  with  IBUpdateSQL1 do
  begin
    InsertSQL.Clear;
    InsertSQL.Add( 'insert into Table_Name    ');
    InsertSQL.Add( '(ju_tokui,  ju_chuno)     ');
    InsertSQL.Add( 'values                    ');
    InsertSQL.Add( '(:ju_tokui,  :ju_chuno)   ');
    ParamByName('ju_tokui').AsString      :=  LEd_tokui.Text;
    ParamByName('ju_chuno').AsString      :=  LEd_chuno.Text; 
  end;
end;

編集 削除
印刷屋  2008-01-23 10:49:45  No: 29439  IP: 192.*.*.*

UpDateSQLはParamByNameを持ってないですよね。

Query側にパラメータを渡すとパラメータがありませんとなりますし。

編集 削除
igy  2008-01-23 11:13:51  No: 29440  IP: 192.*.*.*

試していませんが、↓のような方法ではだめですか?
IBUpDateSQL.Query[ukInsert].ParamByName('xxxxx').AsString := zzzzz;

編集 削除
GT-BASS  2008-01-23 16:28:05  No: 29441  IP: 192.*.*.*

Params.ByName('###').AsString
で書けませんか?
IBUpdateSQLを使ったことは有りませんが、IBDataSetではこの様に書いています。

編集 削除
印刷屋  2008-01-23 22:18:47  No: 29442  IP: 192.*.*.*

皆様ありがとうございます。
igyさんから頂いた情報が欲しかったのです。
おかげさまで、テーブルを開きっぱなしで、更新作業ができるようになりました。
IBQuery.Add('SELECT * FROM COMPANY');
IBQuery.Open;
for cnt := 1 to EndCnt do
if Locate('KEYCODE',grid.Cells[0,cnt],) then
begin
  IBUpDateSQL.Query[ukModify].ParamByName('KEYCODE').AsString := grid.Cells[0,cnt];
  IBUpDateSQL.Query[ukModify].ParamByName('COMNAME').AsString := grid.Cells[1,cnt];
  IBUpDateSQL.Apply(ukModify);
end else begin
  IBUpDateSQL.Query[ukInsert].ParamByName('KEYCODE').AsString := grid.Cells[0,cnt];
  IBUpDateSQL.Query[ukInsert].ParamByName('COMNAME').AsString := grid.Cells[1,cnt];
  IBUpDateSQL.Apply(ukInsert);
end;
end;
IBQuery.Close;

編集 削除