accesss数据库update问题 ( 积分: 100 )

  • 主题发起人 主题发起人 envoy
  • 开始时间 开始时间
E

envoy

Unregistered / Unconfirmed
GUEST, unregistred user!
源代码
==========
sql.Add('update 用户表 set 密码='+''''+edit2.Text+''''+',账号='+''''+edit3.Text+''''+',账号密码='+''''+edit4.Text+''''+' where 用户名='+''''+edit1.Text+'''');
==========
错误提示
==========
.....message '语法错误(操作符丢失) 在查询
表达式 '用户名='1'
update 用户表 set 密码='2',账号='3',账号密码='4' where 用户名='1'' 中。'. Process .....
==========
请帮忙解答,谢谢
 
在外面先执行下 。看看那里报错 。、
不应该报错。÷
那用Format 吧。好看点 。这样看。比较 乱了。
 
是啊,同一句话用在sql server 里面就没有错误,所以很郁闷
 
不要搞那么多引号了吧,很容易搞错的。看看下文:
http://www.delphibbs.com/keylife/iblog_show.asp?xid=4212
 
感谢bjaman提供简单的方法,但是问题依然没有解决,希望更多高人帮忙
 
sql.Add()

之前 先执行 sql.clear
或者将这一句换成 sql.text:=
 
sql.Add('update 用户表 set 密码='''+edit2.Text+''',账号='''+edit3.Text+''',账号密码='''+edit4.Text+''' where 用户名='''+edit1.Text+'''');
 
同意樓上的,或用#39
LZ不要總是照書本上寫的那樣一下寫N個',這樣很容易把自己搞糊塗的,建議先用#39比較好一些。
PS: #39 = '
 
sql.Add(format('update 用户表 set 密码=%s,账号=%s,账号密码=%s where 用户名=%s),[trim(edit2.Text),trim(edit3.Text), trim(edit4.Text),trim(edit1.Text)]);
 
谢谢大家捧场,我用了QuotedStr()不行,而且这条语句在sql server中使用是正常的,听说access数据库和sql server的sql命令不太一样,尤其是update语句,所以会产生问题大家多多帮忙吧
 
你用过我说的了么

表达式 '用户名='1'
update 用户表 set 密码='2',账号='3',账号密码='4' where 用户名='1'' 中。'. Process .....

你看看你自己贴出来的
update前面怎么还有 用户名='1'
 
到底里面什么是主键,什么字段是唯一的。是账号还是用户名????
会不会是用户名不唯一导致不行
 
Parameters.ParamByName('').Value:= edit1.text
传进去试试!!
你那样写太乱易出错!
 
同一楼上的,参数法不太容易出错
 
还是SandWater大哥说的有道理,我太粗心了,在此谢谢大家关照
bjaman大哥告诉我的用参数省略单引号也受用无穷,二位吧积分分掉吧,要是觉得分不够就mail小弟root@envoy.cn
 
后退
顶部