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

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换成逗号就抱错说语法错误,但我明明记得是逗号的嘛

请各位不吝赐教
...全文
40 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
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语句是用,好的,

换,的 #+ ,的编码看看

2,507

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧