关于控件释放的问题(50分)

  • 主题发起人 主题发起人 haisongzhang
  • 开始时间 开始时间
H

haisongzhang

Unregistered / Unconfirmed
GUEST, unregistred user!
窗体已经存在一个控件为AdoQuery1和一个Button1。
在Button1的Click事件中需要对AdoQuery1进行处理,大致内容如下:
{一些其他处理}
adoquery1.close ;
Adoquery1.sql.text :='select * from table1' ;
Adoquery1.open; {假设Adoquery1不为空}
Adoquery1.first ;
While Not Adoquery1.Eof do
begin
{一些其他处理}
end ;

问题:程序第一次出发Button1的Click事件时运行正常,第一次结束后,第二次运行时,
就不执行了While内的部分!
为什么?怎么解决?
 
能否把事件结束后,释放掉AdoQuery1,开始时在创建?
 
参考:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=0978303
http://www.delphibbs.com/delphibbs/dispq.asp?lid=0866199
 
加入dbgrid 看第二次执行是否没有数据返回
 
我现在使用的就是Delphi6,应该不存在在升级的问题。
adoquery1不为空的时候,第一次运行正常,第二次就条件不满足了.搞不懂!
 
应该是没有的吗!
要是有的话应该执行While内的东西吗!
 
在Adoquery1.close下面加一句Adoquery1.Sql.clear;
试试看!!
建议以后数据库文件名不要用table1定义,因为与数据库中标识符table类似,这样容易
使误句造成错误!!!
 
真的不知道是什么原因,一会好,一会坏!
 
To 春意:我在Close后面写了sql.Clear ;
我上面所写的只是个例子,我的程序中的表明不是这样定义的!
运行了两次以上,adoquery就不返回值了,要么就是变少了。
我从adoquery的RecordCount中得到的~!




 
adoquery1.close ;
Adoquery1.sql.text :='select * from table1' ;
Adoquery1.open; {假设Adoquery1不为空}
While Not Adoquery1.isempty do
begin
{一些其他处理}
end ;
 
已知的adoquery1的查询条件的记录不为空,在第一次运行正常,
第二次运行,adoquery1返回的数据集减少或者
是没有返回!
能否把adoquery1释放?(不能自定义一个adoquery,使用窗体上的控件)
 
我在我计算机上作了多次都没有问题呀,
如果你的sql语句是固定的,可不可以不在OPEN,直接使用first呢?
 
我新建一个工程,运行也是没有问题!
在这个adoquery之上有很多处理,也就是说,这段程序写的比较深,
这是不是跟程序的复杂性有关?
还有就是,查询的速度也很慢,比起一个新建的工程单做某个查询。
能否解决?
 
能否释放掉?
 
Delphi 对ADO的支持不好,可能没有升级ADO
 
我现在使用的是Delphi6中的AdoExpress。还需要升级吗?
 
后退
顶部