CSVファイルのデータをDB(INTERBASE)に登録しています。
どりあえず1レコードの1項目を登録したいと考えています。
実行するとエラーが表示されます。
SQL err code -206
column unknown
CUST_CD
何が原因でしょうか?
よろしくお願い致します。
procedure TForm1.Button1Click(Sender: TObject);
var
SL1:TStringList;
SL2:TStringList;
i,j :word;
xx,zz,nam:string;
begin
try
IBDatabase1.Connected := Active;
SL1:=TstringList.Create;
SL2:=TstringList.Create;
if Opendialog1.Execute then begin
nam := Opendialog1.FileName;
SL1.LoadFromFile(nam);
for i:=0 to SL1.count-1 do begin
SL2.CommaText := SL1[i];
IBQuery1.Close;
IBQuery1.SQL.Clear;
IBQuery1.SQL.Add('insert into customer (cust_cd)');
IBQuery1.SQL.Add('values (:cust_cd)');
IBQuery1.ParamByName('cust_cd').AsString:=SL2[0];
Try
IBQuery1.ExecSQL;
except
end;
end;
end;
Finally
SL1.Free;
SL2.Free;
IBQuery1.Active := False;
IBDatabase1.Connected := False;
end;
end;
end.
項目の名前が違っています。
customer テーブルがありますか?
そのcustomer テーブルにcust_cdがありますか?
場合に依ったら、これが大文字の場合もあります。
できれば、IBConsoleなどで、確認しましょう。
混在の場合もあります。
ご指導ありがとうございます。
IBOConsoleで確認しましたら、CUSTOMERとcustomerの2つの
テーブルがありました。
CUSTOMERにはcust_cdがありませんでした。
テーブル名の変更をしたいのですが、できませんでした。
どのようにしたらよろしいのでしょうか?
ほんとは、テーブル作成時にすればいいのですが。
こんな場合は、項目やテーブル名をダブルクオーテーション(")
で括ったSQL文を発行すればOKです。
すみません。
項目やテーブル名をダブルクオーテーション(")とは
どのように記述すればよろしいのでしょうか?
お手数ですがよろしくお願い致します。
Ex.)
> IBQuery1.SQL.Add('insert into customer (cust_cd)');
IBQuery1.SQL.Add('insert into "customer" ("cust_cd")');
^ ^ ^ ^
こうですね。この場合は、必ず登録されたテーブル名と全く同じにしてください。
丁寧にご指導ありがとうございました。
ツイート | ![]() |