关于ADOQuery的onCalcFields计算字段的触发,很奇怪,大家都会碰到的,进来看看解决思路

关于ADOQuery的onCalcFields计算字段的触发,很奇怪,大家都会碰到的,进来看看
在Adoquery加了一个计算字段,在其onCalcFields事件里调用一个函数来计算这个计算字段。
然后,adoquery.open时,实际上整张表就一第记录,但我跟踪adoquery.open事件发生时,对其 onCalcFields这个事件竟然调用了四五次之多,MY GOD,我只有一条记录呀,又没有修改数据,只一个OPEN为什么会触发这么多次计算事件?

有人碰到过么?怎么避免呢?否则数据量大后岂不是会很慢???

------解决方案--------------------
应该是数据集状态发生改变都会触发,比如关联字段值发生改变或post,应该就会触发它,open时,对字段的初始化应该也会触发
------解决方案--------------------
onCalcFields是在数据发生改变的时候都会触发的
open,last,next,locate,append,... adoquery.fields[0].asstring:=... 等等

------解决方案--------------------
触发次数不是按记录的笔数来的,它是按字段数*记录数来的。
------解决方案--------------------
帮助文档说的很详细了呀,
截取部份:
OnCalcFields is triggered when:

A dataset is opened.
A dataset is put into dsEdit state.
A record is retrieved from a database.

When the AutoCalcFields property is true, OnCalcFields is also triggered when:

Focus moves from one visual control to another, or from one column to another is a data-aware grid control and modifications were made to the record.
------解决方案--------------------
无代码无真相...
事出必有因,自己F3一步步运行看看,到底在那里又触发了
------解决方案--------------------
经测试,是按记录数
------解决方案--------------------
是cxGrid的关联问题
------解决方案--------------------
用DBGRid是没有这个现象的,你去cxGrid官网看看有无类似的tips?