Office中国论坛/Access中国论坛

标题: 求教:一个主窗体合计问题 [打印本页]

作者: fnsmydyang    时间: 2015-6-14 17:30
标题: 求教:一个主窗体合计问题
请教各位老师
       主窗体合计文本框引用子窗体控件,为什么数量变更后,主窗体合计不变,只有光标移下一笔记录才会变呢?有没有什么方法修改数量后就发生变化呢?谢谢!!![attach]56594[/attach][attach]56595[/attach]



作者: 灰太郎    时间: 2015-6-14 19:30
s's's's's's's's's's's
作者: fnsmydyang    时间: 2015-6-15 07:47
不能沉,问题没能解决,顶一下...
作者: zhidao    时间: 2015-6-15 10:32
个人理解获得焦点后不移开,应该是数据未更新,所以合计没变。
作者: fnsmydyang    时间: 2015-6-15 11:03
zhidao 发表于 2015-6-15 10:32
个人理解获得焦点后不移开,应该是数据未更新,所以合计没变。

只能说这笔记录未完全更新,但数量 AfterUpdate 事件已触发了。
作者: koutx    时间: 2015-6-15 11:24
如下试试
[attach]56597[/attach]

作者: roych    时间: 2015-6-15 14:15
建议楼主先了解下窗体事件触发顺序再来研究这个问题。以下摘自网络(印象中论坛上应该有,但是没找到):
处理窗体中的数据
        在窗体中的记录间移动并对数据进行更改时,将发生窗体事件和控件事件。例如,第一次打开一个窗体时,将按照下列顺序发生相应的事件:
        Open(打开,窗体) → Load(加载,窗体) → Resize(调整大小,窗体) → Activate(激活,窗体) → Current(成为当前,窗体) → Enter(进入,控件) → GotFocus(获得焦点,控件)
        类似地,在关闭窗体时,也将按照下列顺序发生相应的事件:
Exit(退出,控件) → LostFocus(失去焦点,控件) → Unload(卸载,窗体) → Deactivate(停用,窗体) → Close(关闭,窗体)
        如果已经对控件中的数据进行更改,控件和窗体的 BeforeUpdate (更新前)事件和 AfterUpdate (更新后)事件都将在 Exit 事件发生之前发生。

使用子窗体

        如果打开的窗体中包含有子窗体,则在加载主窗体之前先加载子窗体及其控件。因而,子窗体及其控件的事件(例如,Open 事件、Current 事件、Enter 事件和 GotFocus 事件)将在主窗体的事件发生之前先发生。但子窗体不会发生 Activate 事件,因此在打开主窗体时仅触发主窗体的 Activate 事件。
        类似地,当关闭包含子窗体的窗体时,在窗体卸载之后子窗体及其包含的控件也会卸载。子窗体不会发生 Deactivate 事件,因此在关闭主窗体时仅触发主窗体的 Deactivate 事件。对应于控件、窗体和子窗体的事件将按照下列顺序发生。
        1.  对应于子窗体控件的事件(例如 Exit 和 LostFocus)
        2. 对应于窗体控件的事件(包括子窗体控件)
        3. 对应于窗体的事件(例如 Deactivate 和 Close)
        4.  对应于子窗体的事件
         注释   因为子窗体的事件是在主窗体关闭后发生的,所以某些事件(例如,从子窗体的某个事件中取消主窗体的关闭)将不会发生。您可能需要将这些类型的验证移动到主窗体的事件中。

按上面的顺序,我们可以知道。修改一条记录,那么控件的顺序便是:
Open(打开,窗体) → Load(加载,窗体) → Resize(调整大小,窗体) → Activate(激活,窗体) → Current(成为当前,窗体) → Enter(进入,控件) → GotFocus(获得焦点,控件)→BeforeUpdate (更新前,控件)和 AfterUpdate (更新后,控件)Exit(退出,控件) → LostFocus(失去焦点,控件)
由于求和的文本控件是基于记录文本控件的基础上计算的。因此,应该要等到记录更新后才重新计算的,所以会有一些延时的。
做子窗体查询时,我往往是通过控件更新后或者更改事件来刷新数据的。当然,最好的还是用按钮来执行,不用考虑触发事件的顺序。
作者: fnsmydyang    时间: 2015-6-15 16:15
谢谢版主如此详细说明,非常感谢,弄明白了!
作者: fnsmydyang    时间: 2015-6-15 16:20
koutx 发表于 2015-6-15 11:24
如下试试

谢谢!受教了,
作者: hannanrenjie    时间: 2015-6-15 17:45
讲解得很详细,受教了。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3