帮忙看看这个sql语句???(50分)

  • 主题发起人 主题发起人 becauseloveyou
  • 开始时间 开始时间
B

becauseloveyou

Unregistered / Unconfirmed
GUEST, unregistred user!
有表名字:tempdb
字段
id 自动编号
piaohao
kehu
xiangmu
neirong
jine
riqi
user 文本
有如下语句:
insert into tempdb(piaohao,kehu,xiangmu,neirong,jine,riqi,user) values(:ph,:kh,:xm,:nr,:je,:rq,:us)
老提示语法不对,哪位高手指点下,错在那里了?
 
关键是这个语句你是怎么执行的?如果说是直接在sql里执行 铁定是错的了。 
如果是delphi执行,那可能就是你赋值的某个植可能类型或者长度不符了.
 
是在哪个里面提示语法错?
是数据库提示?
如果是在企业管理器里(SQL SERVER 2000)提示的,那是因为你的字段值给的不正确;
还是在DELPHI中提示的?
在DELPHI里提示的,我帮不了你,因为我不知道你代码怎么写的......
 
delphi中的提示,提示的错误是insert into 语句用法不正确.

with temp_q do
begin
close;
sql.Clear;
sql.Add('insert into temp(piaohao,kehu,xiangmu,neirong,jine,riqi,user) values(:ph,:kh,:xm,:nr,:je,:rq,:us)');
Parameters.ParamByName('ph').Value:=edit4.Text;
Parameters.ParamByName('kh').Value:=combobox1.Text;
Parameters.ParamByName('xm').Value:=combobox2.Text+edit1.Text;
Parameters.ParamByName('nr').Value:=combobox3.Text;
Parameters.ParamByName('je').Value:=edit2.Text+'.00';
Parameters.ParamByName('rq').Value:=edit3.Text;
Parameters.ParamByName('us').Value:=edit5.Text;
execsql;
close;
end;

本来语句是sql.Add('insert into temp values(:ph,:kh,:xm,:nr,:je,:rq,:us)');后来因为我为表temp填加了一个自动编号的字段,修改了下语句,就提示出错了.
 
'insert into temp(piaohao...
倒底是TEMPDB还是TEMP? -_-!!
 
temp,有自动字段的表,数据不是这么添加的么?真郁闷.
 
你表的各个字段都是字符类型的吗?还有,你的表字段怎么全用拼音啊,这是不恰当的.最好是用同意的英语字词来表示.
jine是金额吧,它应当是FLOAT类型的。你这句话就要改:
Parameters.ParamByName('je').Value:=edit2.Text+'.00';
==》 Parameters.ParamByName('je').Value:=strtofloat(edit2.text);
Parameters.ParamByName('rq').Value:=edit3.Text;//这里是指日期吧,你要保证日期类型数据是正确的才行。。。。
 
除了自动编号都是文本,如果去掉字段,插入数据没有问题:
insert into temp values(:ph,:kh,:xm,:nr,:je,:rq,:us);
这么写可以执行,我改的只是指定了字段:
insert into temp(piaohao,kehu,xiangmu,neirong,jine,riqi,user) values(:ph,:kh,:xm,:nr,:je,:rq,:us)
顺便说下数据库是access,是不是数据库的问题?
 
VALUES('+Quotedstr('')+','+Quotedstr('')+');
 
在DELPHI里面不能写纯粹的SQL语句啊!
VALUES('+edit4.Text+','+edit5.Text+');
 
你的字段类型是否跟你所输入的值相符?
 
頂一下,看錯了。
 
这样看看:
sql.Add('insert into temp(piaohao,kehu,xiangmu,neirong,jine,riqi,user) values('+#39+edit4.Text+#39+','+#39+combobox1.Text+#39+','+#39+combobox2.Text+edit1.Text+#39+','+#39+combobox3.Text+#39+','+#39+edit2.Text+'.00'+#39+','+#39+edit3.Text+#39+','+#39+edit5.Text+#39+')');
execsql;
 
顺便问一下,报的什么错?能说一下嘛?
 
TO:
angellover
我的是参数赋值.
TO:
lingb
报的错误是insert into 语句用法不正确!
 
哈哈,日的,真搞笑,原因居然是那个“user“字段
语句没有问题,大家的都对,可能是Acess不允许在表中使用“user“名称的字段缘故,把它去了就好了,谢谢大家的帮助了。
 
哈哈,这个错误每个数据库都有自己一些关键字,比如在ORACLE里面“LEVEL”是不能作为列名使用的
 
多人接受答案了。
 
后退
顶部