关于网友提出的“ 关于ADOQuery的onCalcFields计算字段的触发,很奇怪,大家都会碰到的,进来看看”问题疑问,本网通过在网上对“ 关于ADOQuery的onCalcFields计算字段的触发,很奇怪,大家都会碰到的,进来看看”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 关于ADOQuery的onCalcFields计算字段的触发,很奇怪,大家都会碰到的,进来看看
描述: 在Adoquery加了一个计算字段,在其onCalcFields事件里调用一个函数来计算这个计算字段。
然后,adoquery.open时,实际上整张表就一第记录,但我跟踪adoquery.open事件发生时,对其 onCalcFields这个事件竟然调用了四五次之多,MY GOD,我只有一条记录呀,又没有修改数据,只一个OPEN为什么会触发这么多次计算事件?
有人碰到过么?怎么避免呢?否则数据量大后岂不是会很慢???
解决方案1: 用DBGRid是没有这个现象的,你去cxGrid官网看看有无类似的tips?
解决方案2: 是cxGrid的关联问题
解决方案3: 经测试,是按记录数
解决方案4: 帮助文档说的很详细了呀,
截取部份:
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.
解决方案5: 无代码无真相...
事出必有因,自己F3一步步运行看看,到底在那里又触发了
解决方案6: 触发次数不是按记录的笔数来的,它是按字段数*记录数来的。
解决方案7: onCalcFields是在数据发生改变的时候都会触发的
open,last,next,locate,append,... adoquery.fields[0].asstring:=... 等等
解决方案8: 应该是数据集状态发生改变都会触发,比如关联字段值发生改变或post,应该就会触发它,open时,对字段的初始化应该也会触发
以上介绍了“ 关于ADOQuery的onCalcFields计算字段的触发,很奇怪,大家都会碰到的,进来看看”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3125045.html