一般是在ADOquery中Add Calculated field 加入新计算字段后,在OnCalcFields事件中对其赋值!以前此方法都管用,但现在发现一个重大问题,很疑惑,不知是何原因,如下示:ADOquery执行查询过后,得到2000多条记录,显示在DBGridEh中,由于DBGridEh的大小原因,只能显示前面的30条记录,其它的要通过拖动滚动条来显示,问题就在这儿,OnCalcFields事件只对这30条记录(DBGridEh中可以看到的记录)进行赋值计算,而其他的就不计算,如果拖动滚动条,它又才开始计算。晕了,这是怎么回事?我记得它可以一次性全部计算完的,为何还要依靠DBGridEh呢,DBGridEh中只能显示那么多条它就只计算那么多条,不会是这样的吧!!是不是哪里还要设置?各位帮忙解答一下!!疑惑中!!!
解决方案 »
- 密界高手!请进
- 怎么用ado 连接远程数据库? 急用谢谢
- 怎么在RzShellList中加入Item的同时,同样把图标也加到SmallImages中
- (quickreport)...今天客戶問我..
- 请做销售界面用什么网格控件比较好呀 ???
- 请问:怎么令delphi的窗体不能拉伸和最大化啊?
- 请帮忙测试网站
- 请猛禽接分 原帖http://expert.csdn.net/Expert/topic/2368/2368797.xml?temp=.1806757
- 请教delphi的简单sql语句错误???
- 请帮忙分析以下的源程序片段!一定给分!
- FastReport中简单的分组问题(请指点)100分送上
- 我的机器装了Sygate,可正常上网,但是QQ,PP等东东不能登陆,是哪儿的事?
ADOquery打开前先把DBGridEh的DataSource1属性屏蔽掉,ADOquery打开后在重新设置一下DBGridEh的DataSource1属性。
或者在ADOquery的OnCalcFields事件中加一个计数器,看看ADOquery执行查询过后是否只赋值30次,如果等于记录数,那就不是OnCalcFields事件中的问题了,而是DBGridEh显示的问题了。
俺试了TDBGrid、TwwDBGrid、TdxDBGrid三种都没问题,从来没发现你说的问题。呵呵,替你郁闷
Adoquery1.DisableControls;
//这里还可以加上book控制
try
AdoQuery1.First
while not AdoQuery1.Eof do
begin
AdoQuery1.Next;
end;
finally
AdoQuery1.EnableCOntrols;
end;