我用Tquery、database、datasource作了一个往access库中写入的程序,但每次只能写入三个字段,如果多于三个字段就提示
“INSERT INTO:语句的语法错误”,
请问这是为何?
(用的是DELPHI6.0)
程序如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
with query1 do
begin
close;
with sql do
begin
clear;
Add(’insert into cust_info1 (id,name,sex,level,acct,card)’);
add(’values(:id,:name,:sex,:level,:acct,:card)’);
end;
parambyname(’id’).asstring:=Edit4.text;
parambyname(’name’).asstring:=edit1.text;
parambyname(’sex’).asstring:=ComboBox1.text;
parambyname(’level’).asstring:=ComboBox2.text;
parambyname(’acct’).asstring:=edit2.text;
parambyname(’card’).asstring:=edit3.text;
ExecSQL;
Close;
sQL.Clear;
sQL.Add(’select * from cust_info1’);
open;
end;
end;
“INSERT INTO:语句的语法错误”,
请问这是为何?
(用的是DELPHI6.0)
程序如下:
procedure TForm1.Button1Click(Sender: TObject);
begin
with query1 do
begin
close;
with sql do
begin
clear;
Add(’insert into cust_info1 (id,name,sex,level,acct,card)’);
add(’values(:id,:name,:sex,:level,:acct,:card)’);
end;
parambyname(’id’).asstring:=Edit4.text;
parambyname(’name’).asstring:=edit1.text;
parambyname(’sex’).asstring:=ComboBox1.text;
parambyname(’level’).asstring:=ComboBox2.text;
parambyname(’acct’).asstring:=edit2.text;
parambyname(’card’).asstring:=edit3.text;
ExecSQL;
Close;
sQL.Clear;
sQL.Add(’select * from cust_info1’);
open;
end;
end;
Prepare;
加在什么位置?
我用的是access数据库,字段中除主索引字段为整型外,其他全为文本格式,确实是当我把Add(’insert into cust_info1 (id,name,sex,level,acct,card)’);改为Add(’insert into cust_info1 (id,name,sex)’);后,操作就成功了,但如果加上level,就提示“INSERT INTO:语句的语法错误”请问如何解决哈?!
谢先!
应该就ok了
我以前有过类似经验
所以你的
parambyname(’level’).asstring:=ComboBox2.text;
改成
parambyname(’level’).value:=Strtoint(ComboBox2.text); 另外,对参数赋值最好使用parambyname('paramName').value :=...
而不要用ASSTRING:=...这样的格式. with query1 do
begin
close;
with sql do
begin
clear; Add(’insert into cust_info1 (id,name,sex,level,acct,card)’);
add(’values(:id,:name,:sex,:level,:acct,:card)’);
prepared ;................... 放在这里可以.不过,PREPARED是要占资源的,所以在CLOSE后须用UNPREPARED来放掉.