请帮忙看下为什么这些语句不执行

ShellMarx 2004-05-05 09:53:42
with adoquery1 do
begin
Close;
sql.clear;
sql.Add('update Table_User set ');
sql.Add('User_Name='''+edit1.text+''' and '); //用户名
//sql.add('Project='''+frmlogin.combobox1.text+''' and ');//所属项目
sql.Add('Mail_Address='''+edit4.Text+''' and '); //电邮
sql.Add('Group='''+inttostr(DefineGroup(roles))+''' '); //所属组,即权限
SQL.Add('where User_Name='''+listbox1.Items.Strings[listbox1.itemindex]+'''');
showmessage(adoquery1.SQL.Text);
execsql;
end;

上面的语句为什么不执行呢?

如果拆成单条的语句就可以执行;
如果把update语句中的and换成逗号就抱错说语法错误,但我明明记得是逗号的嘛

请各位不吝赐教
...全文
15 11 点赞 打赏 收藏 举报
写回复
11 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ShellMarx 2004-05-06
CloneCenter说得对,使Group字段名的问题,可能Group与delphi关键字相冲突吧,所以把
Group字段改为User_Group就好了。

都是delphi的垃圾出错信息害人,关键字冲突说出来就好了嘛,干嘛老说sql语法错呢,误导!
严重缺陷来的!!!
  • 打赏
  • 举报
回复
CloneCenter 2004-05-06
Update set 后面应该使用逗号的,将那个 Group 字段加上双引号再执行,有可能是这个关键字在作怪。
象这样:
update Table_User set
User_Name='A',
Mail_Address='A@A.com',
"Group"='A'
where User_Name='A'
  • 打赏
  • 举报
回复
AdoreTour 2004-05-06
最好用参数!那样的话,字段类型和参数类型一般会自动匹配的,有些除外,如日期等。Delphi的对“'”支持很不好的。
  • 打赏
  • 举报
回复
liulangnanhai 2004-05-06
字段有問題,
樓主沒有說哪幾個東東是什麼類型的
  • 打赏
  • 举报
回复
dengyun1981 2004-05-05
你看看 事件探查器里到底执行的是什么嘛。。
再做修改也不迟啊~
  • 打赏
  • 举报
回复
ShellMarx 2004-05-05
其实用showmessage()
show出来就是
-----------------------------
update Table_User set
User_Name='A',
Mail_Address='A@A.com',
Group='A'
where User_Name='A';
-----------------------------

-----------------------------
update Table_User set
User_Name='A' and
Mail_Address='A@A.com' and
Group='A'
where User_Name='A';
-----------------------------
这样的,但不知道错在哪里
  • 打赏
  • 举报
回复
truelang 2004-05-05
问题可能出在单引号上,,
可以把SQL里的单引号用#39表示。。
  • 打赏
  • 举报
回复
linzhisong 2004-05-05
吃麻麻去了。

好晕!
  • 打赏
  • 举报
回复
linzhisong 2004-05-05
with adoquery1 do
begin
Close;
sql.clear;
sql.Add('update Table_User set ');
sql.Add('User_Name='+Quoted(edit1.text) +', '); //用户名
//sql.add('Project='+ Quoted(frmlogin.combobox1.text) +', ');//所属项目
sql.Add('Mail_Address='+ Quoted(edit4.Text) +', '); //电邮
sql.Add('Group='+ Quoted(inttostr(DefineGroup(roles)))); //所属组,即权限
SQL.Add(' where User_Name='''+listbox1.Items.Strings[listbox1.itemindex]+'''');
showmessage(adoquery1.SQL.Text);
execsql;
end;

单独加逗号应该是不会出错的


抱歉这里没有Delphi可以试一下!
  • 打赏
  • 举报
回复
ShellMarx 2004-05-05
逗号的编码是多少?
  • 打赏
  • 举报
回复
linzhisong 2004-05-05
Update语句是用,好的,

换,的 #+ ,的编码看看
  • 打赏
  • 举报
回复
相关推荐
发帖
数据库相关
加入

2462

社区成员

Delphi 数据库相关
申请成为版主
帖子事件
创建了帖子
2004-05-05 09:53
社区公告
暂无公告