又是一个关于ADOQUERY的问题!(20分)

  • 主题发起人 易名烦
  • 开始时间

易名烦

Unregistered / Unconfirmed
GUEST, unregistred user!
下面的代码通过了,但数据结果不正确。
WITH ADOQUERY1 DO
BEGIN
CLOSE;
SQL.Clear;
SQL.Add('UPDATE CZBPSR SET THSL=JSKC WHERE JCBZ LIKE :BZ');
PARAMETERS.Items[0].Value:='%寄售库存不足!%';
EXECSQL;
END;
改成:
WITH ADOQUERY1 DO
BEGIN
CLOSE;
SQL.Clear;
SQL.Add('UPDATE CZBPSR SET THSL=JSKC WHERE JCBZ LIKE '+''''+'%寄售库存不足!%'+'''');
EXECSQL;
END;
就可以了,为什么?
 
因为JCBZ是文本型的啊,你自己都已经解决了嘛。。。

如果要用参数的形式,可以这样:
Parameters.ParamByName('BZ').value := QuotedStr('%寄售库存不足!%');
其他的不用改。
 
这是因为你的数据库需要引号!!
 
jsxjd:
什么意思?怎么引导?
 
你那个字段是vchar型的,当然在sql语句里也要加上引号
 
我改成:Parameters.ParamByName('BZ').value := QuotedStr('%寄售库存不足!%')了,
还是不行?
跟原来一样,到是:
SQL.Add('UPDATE CZBPSR SET THSL=JSKC WHERE JCBZ LIKE '+quotedstr(''%寄售库存不足!%'')还行得通.
 
PARAMETERS.Items[0].DataType:=ftFixedChar;
PARAMETERS.Items[0].Value:='%寄售库存不足!%';
 
sql语句参数复制后,看一下完整的sql语句,看看是否是正确的。
 
TYZhang:
你说的方法还是不行。
锅炉:
怎么看?
 
PARAMETERS.Items[0].Value:='''%寄售库存不足!%''';
=== ==
 
jsxjd:
这个也不行,相当于QUOTEDSTR();
 
用这种格式
SQL.Add('UPDATE CZBPSR SET THSL=JSKC WHERE JCBZ like '+''''+'%'+'寄售库存不足!'+'%'+'''');
 
我知道啊,可我想知道为什么用参数的形式不行呢/
 
SQL.Add('UPDATE CZBPSR SET THSL=JSKC WHERE JCBZ like '+''''+'%'+edit1.text+'%'+'''');
如果用参数,控件可能处理不了通配符 %
 
老大,我用的是ADO啊,ADO哦。
 
PARAMETERS.Items[0].Value:='%'+'寄售库存不足!'+'%'
 
up 上午断了线,发不了贴,
还可以这样 parameters.paramvalues['bz']:='%'+'寄售库存不足!'+'%'
 
showmessage(sql.text);
 
你这个不对头哦!
 
该成如下
WITH ADOQUERY1 DO
BEGIN
CLOSE;
SQL.Clear;
SQL.Add('UPDATE CZBPSR SET THSL=JSKC WHERE JCBZ LIKE :BZ');
PARAMETERS.parambuname('BZ').Value:='%寄售库存不足!%';
EXECSQL;
END;
就可以了,你的参数用错了
 
顶部