ADOQuery动态参数问题---搞我头大的问题(200分)

  • 主题发起人 主题发起人 onedot
  • 开始时间 开始时间
O

onedot

Unregistered / Unconfirmed
GUEST, unregistred user!
本人ADO升级了,D6也打了补丁2。所有关于BUG问题都应该不存在了。但我却碰到一个很
搞脑子的问题。我真的头大了一倍。
问题举个例子如下:ADOQUERY1,SQL为select * from A where EntryDate<=:BeginDate and EntryDate>=:EndDate
两个参数设计台都指定了DATATYPE为ftDateTime,初始值设置为两个合理的日期。然后设计态
让ADOQUERY1的ACTIVE为TRUE,它MD居然报错说EntryDate列不存在,而事实完全不是的。因为如果
我把后面的and EntryDate>=:EndDate删除,让ADOQUERY1的ACTIVE为TRUE是对的。我靠!
还有一次,我SQL是 ....where A1=:A1 and A2=:A2报A2列不存在错,可....where A2=:A2 and A1=:A1
仅仅反过来就可以
哪位使用TADOQUERY并且多动态参数是否遇到过此类问题??如有请指教一二
 
你真的很幸运,我也没有遇到过类似的问题。
而且我觉得你上面的语句都没有问题嘛。
 
我估计是DELPHI的ADO控件在包ADO的COM接口有问题,以前D5就是有问题 。
问题在于索性删除,重新拉个TADOQUERY,SQL重新写,一次性修改好参数等,才好。以后在基础上
修改就出这些乱七八糟破问题。实在觉得有点窝囊,虽然一直对DELPHI有好感,这次还是有点觉得
DELPHI这点做的有点糟糕!
 
呵呵我也遇到过同样的问题
我把parameters里的参数删了在运行就好了,也弄得我莫名其妙
 
select * from A where (EntryDate<=:BeginDate) and (EntryDate>=:EndDate)
你这样加两个括号试一下。
 
我以前也有这个问题,加括号也没有用。
好象是本来参数不是这样子的,改了以后就出问题了,再变回去就没问题。
我的做法是将参数设好后固定起来,一次性修改好参数,不敢再改动,要改动重来一个。
 
我也碰到类似问题,我是这样解决的:
Parameters.ParamByName('begindate').value:=strtodate(datetostr(DateTimePicker1.Date))
很奇怪吧!
 
删除,重来,是解决问题行之有效的办法。
 
请问你有没有在更变sql语句前,clear所有的param阿?
还有,你的dataset fields 中是否有上次语句的field遗留?

 
一直在用,没什么问题
 
我的也没问题
 
哎,其实很多时候我们都需要设计态就看到数据集以便设计表现形式或看到结果。
其实问题就在于设计态要么一次性全设好,如果SQL有变化或动态参数有变化,你在设计态一改
很容易出现乱七八糟的破错误。所以我现在也是如果有改动,就把原来删除,重新拉个重新
在设计态改。真TMD搞不懂为什么
 
同意Feizi:我在用ADOSTORE动态执行存储过程时也遇到过这个问题,原因是在设计时曾经对它
固定过一个存储过程并填充了PARAMS属性,后来将存储过程名删除后没有相应删PARAMS,程序
运行出错.清除PARAMS后就正常了.所以如果想用动态执行的话,一定要在设计期保证控件的
纯洁.
 
没有碰到,
 
参数类型改为ftFixedChar试一下
 
什么数据库?
 
参数类型改为ftFixedChar试一下?兄弟,如果你有LIKE的话,你的参数就完全失效,而只能
是FTSTRING,总的说TADOQUERY很多关于参数问题,程序在调试或开发时可以参数放东西,但
真正发布时一定要好好检查晴空。
 
应该是参数的问题,试试
select * from A where EntryDate between :BeginDate and :EndDate

--
http://www.8421.org
 
后退
顶部