注册 登录
编程论坛 Delphi论坛

请教各位各位这是什么错误?

court1 发布于 2010-07-27 17:25, 1040 次点击
procedure Tgzgl.Button2Click(Sender: TObject);
begin
with adoquery1 do
  begin
  close;
  sql.Clear ;
  sql.Add('insert into pay(date,id,name,bpay,apay) values (:date,:id,:name,:bpay,:apay)');               
   Parameters.ParamByName('date').value:=edit1.text;
   Parameters.ParamByName('id').value:=edit2.text;
   Parameters.ParamByName('name').value:=edit3.text;
   Parameters.ParamByName('bpay').value:=edit4.text;
   Parameters.ParamByName('apay').value:=edit5.text;
  execsql;
  showmessage('保存成功')
  end;
end.
开始正常进入程序
为什么一点击“添加”按钮运行就出现错误
 
只有本站会员才能查看附件,请 登录
  
 
我是在dbgrid显示access数据库内容 使用了一个 datasource 和一个adoquery控件连接到access数据库上,
是我链接不对吗?

[ 本帖最后由 court1 于 2010-7-28 10:30 编辑 ]
7 回复
#2
court12010-07-28 10:29
回复 楼主 court1
好久没人回复 我自己在网上找到了 供大家参考把
参照内容:

异常详细信息: System.Data.OleDb.OleDbException: INSERT INTO 语句的语法错误。

设置断点,把sql【INSERT INTO [group] ([Group],User) VALUES ('5','6') 】拷贝到Access中执行,没有报错!可是为什么在页面中执行就报错呢?百思不得其解!折腾了好久都没搞定!最后百无聊赖的把User字段加上中括号,然后再执行,竟然成功了!靠!

最后的sql是:
INSERT INTO [group] ([Group],[User]) VALUES ('5','6')

#3
yalewang2010-08-04 16:28
关注。
#4
makebest2010-08-05 15:47
根据连接方式的不同, SQL 中的参数的格式是不同的,
:xxx  是 ORACLE 的用法
?     是 OLEDB 的用法
@xxx  是 SQLSERVER 的用法
#5
steven10132010-09-02 15:21
我在sql server 2000上试验了下,正常,没问题!
#6
ouyang_paul2010-09-17 00:05
关注度不是很高啊。。。。
#7
ira_wang2010-12-08 16:12
这个语句没问题的
#8
ira_wang2010-12-08 16:13
execsql 改成OPEN
1