今までは、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;
全く別のシステムだけど、こんな感じだったかな...(不安)
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;
UpDateSQLはParamByNameを持ってないですよね。
Query側にパラメータを渡すとパラメータがありませんとなりますし。
試していませんが、↓のような方法ではだめですか?
IBUpDateSQL.Query[ukInsert].ParamByName('xxxxx').AsString := zzzzz;
Params.ByName('###').AsString
で書けませんか?
IBUpdateSQLを使ったことは有りませんが、IBDataSetではこの様に書いています。
皆様ありがとうございます。
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;
ツイート | ![]() |