这条sql 语句为什么总报告insert 语法错误?(20分)

  • 主题发起人 主题发起人 wzb_shipman
  • 开始时间 开始时间
W

wzb_shipman

Unregistered / Unconfirmed
GUEST, unregistred user!
s1:=zdbbrydja['zdbbid'];
s2:=zdbbrydja['userid'];
zdbbrccj.SQL.Clear;
str:='insert into zdbbrccj ';
str:=str+'(userid,zdbbid,date,km,cj)';
str:=str+' values ('''+s2+''',';
str:=str+s1+',''';
str:=str+datetostr(date)+''',''';
str:=str+flatcombobox3.Text+''',''';
str:=str+flatedit1.Text+''');';
showmessage(str);
zdbbrccj.SQL.Add(str);
zdbbrccj.ExecSQL;
 
你还是直接把生成STR字符串贴出来吧看看有没有什么问题
 
好多''' ,,把str显示出来看看.. 不然头晕..
 
分号是''''
 
insert语句的后面也没有;号
 
把str给我们看看。在写sql时用到了'时,建议用quotedstr(str),否则很多'自己都头晕
 
是不是str最后一个赋值多了一个';'——分号
 
不要把语句写成这么多行,这样自己查找错误都不方便!
肯定是你的语句有问题的!你再仔细查找一下吧!
 
如果你自己用了showmessage还不能确定错误的话,那就应该是betasea和superying所说的
str最后不能有分号。
 
把你的str拷贝到后台的数据库中执行,你能得到更多的提示。这是一种调试方法。
 
str:=str+flatedit1.Text+''');';
这一句中多了个‘;’
str:=str+flatedit1.Text+''')';
 
直接在SQL环境下调试,这是个很好的找错方法
 
不知后台使用的是何种数据库.
如果是ORACLE则日期类型的输入不对;正确写法应该为 str := str + 'to_date(Quotedstr(datetostr(date)))'
 
拼字符串中‘ 最好用" 替换。
eg: sql.text := 'select * from aaa where field=' +''''+ edit1.text+'''';
sql.text := 'select * from aaa where field=' +'"'+ edit1.text+'"';
ok?


 
试试这样行不行:
Str := 'insert into zdbbrccj (userid,zdbbid,date,km,cj) '
+ ' values ( ''' + S2 + ''',''' + s1 +''',''' + DataToStr(Date)
+ ''',''' + flatcombobox3.Text + ''',''' + flatedit1.Text + ''')';
with zdbbrccj do
begin
Close;
Sql.clear;
Sql.Add(Str);
ExecSQL;
end;
 
问题已经解决
:)
 
后退
顶部