以前、BDEとIBでUpdateSQLの使い方を教えていただいて、そのままDBISAMで利用しようとしたらうまくいきません。
ご教授願います。D7+WIN2000
とりあえずInsert部分のみですが、
with DBISAMUpdateSQL do
begin
Query[ukInsert].ParamByName('CODE').AsString := edtCode.Text;
Query[ukInsert].ParamByName('NAME').AsString := edtName.Text;
Apply(ukInsert);//←ここで
end;
A value must be provided for the field'NAME' in the table 'TEST'
'TEST'というテーブルのfield'NAME'に値を提供しなければなりません。
となります。
テーブル設計とかQueryのSQLとか確認したんですがどうもわかりません。
TDBISAMUpdateSQL は使ったことがないのですが、
InsertSQL プロパティ は、どのように記述していますか?
前文は省略&名称変換していますが、実際は
insert into NECESSARY
(CODE, NAME, KANA, DISPLAYNAME, SALEPRICE, COSTPRICE, WHOLESALE,
ORDERLOT, LOT, UNITNAME, MEMO)
values
(:CODE, :NAME, :KANA, :DISPLAYNAME, :SALEPRICE, :COSTPRICE, :WHOLESALE,
:ORDERLOT, :LOT, :UNITNAME, :MEMO)
です。
Queryは
SELECT *
FROM NECESSARY
ORDER BY CODE ASC
です。
RequestLive=True&Order Byの記述を無くせば、カレントレコードに対する編集できるんですが、並びが登録順になるんでUpdateSQLを使いたいんです。
>Apply(ukInsert);//←ここで
ExecSQL(ukInsert); ではないでしょうか。
ちょっと普通のBDEの構文とは違うので、判りにくいのですが、
BDEでTQuery+TUpdateSQLでSQL文が
>Queryは
>SELECT *
>FROM NECESSARY
>ORDER BY CODE ASC
だと、
with DBISAMUpdateSQL do
begin
Edit;
FieldByName('CODE').AsString := edtCode.Text;
FieldByName('NAME').AsString := edtName.Text;
Post;
ApplyUpdate;
end;
は使えませんか?
みなさんありがとうございます。
とりあえず、UpDateSQLでのInsertが成功しました。
with DBISAMUpdateSQL do
begin
Append;
Query[ukInsert].ParamByName('CODE').AsString := edtCode.Text;
//つらつらと…パラメータを全部挿入。
Post;
ExecSQL;
end;
で挿入成功でした。
自分の認識として、
Apply(ukInsert)はパラメータがある場合
ExecSQL(ukInsert)はパラメータがない場合とヘルプを読んで解釈していたのですが。
Apply(ukInsert)だとエラーになりました。
意味がわかりません。
ツイート | ![]() |