关于子窗体 ACCESS中有个很好用的功能,就是只要设置了子窗体和父窗体的关联字段,当父窗体的关联字段变化时,子窗体显示的内容就会自动同步变化。这个过程不需要编一行代码,很贴心,我也用得很顺手。
但最近我做的程序里,不知为何子窗体总是显示乱七八糟的内容,不能和父窗体的内容同步变化。具体情况是这样的:话说我的树控件的细节信息放在细节子窗体里显示,因为一个树上可能挂多种类型的细节,所以细节子窗体也有好几个,所有的细节子窗体都和主窗体的细节ID关联。当选择了某种类型的节点后,其他类型的细节子窗体就都visible变假,只有当前类型的细节子窗体可见。为了不让用户视觉上不舒服,我把这些子窗体的位置和大小都调得一模一样,互相压着,这样用户看起来只有一个窗体始终在显示细节。
出BUG的时候挺奇怪的,有个别类型的细节子窗体不能正确显示数据,其他类型则正确。大约点击十几个节点后,就又全部正确了。很奇怪的说。
最后我发现,原来是其中有一个子窗体的初始可见性我忘了设为假,所以一开始它挡在ZORDER比它大的子窗体的前面,所以有些子窗体的数据正确、有些不正确;而之后反复点击之后,这个“忘了设为假”的窗体终于也被程序设了假,之后就一切正常了。呵呵。
这种BUG的根源真是意料之外啊。幸亏我没一根筋地去跟代码,而是多做了很多次,反复观察BUG的现象。这是个好习惯,以后也要这样做!
补充1:
今天又遇到子窗体不能正确同步的问题,这回我是设置了假的主关联字段(一个未绑定的文本框),然后用设置子窗体sourceobject的方式来设置子窗体的数据源。不知为何子窗体不能正确同步,始终显示的是关联字段为3的记录。后来我断点跟踪一下,发现子窗体的主关联字段被改成了和子关联字段一样。我又在代码里强制改关联字段,报错,说这个属性的使用或设置无效。最后,我把这个文本框绑定了一个字段,就又正常了。虽然我并不真的用这个文本框显示那个字段的内容(我在代码里动态改变它),但是貌似它不关联字段,我的子窗体就不能正确关联上它。
补充2:
上面说的这个加关联字段,也不能瞎加。话说,我按上面做了之后,我的窗体一关,主窗体的第一条记录的一个字段总是莫名其妙被改掉了。可我并没有写过改这个字段的代码。后来我发现,改掉的这个字段正是我关联的这个字段,我把这个字段的数据源删为空,就一切正常了。唉。看来得这样,先装模作样地设个关联字段,然后再把关联字段删了,才能正常工作。2个小时的心血之谈啊。唉。

本文探讨了ACCESS中子窗体同步显示错误的问题及解决方案。作者通过调整子窗体的可见性和绑定正确的关联字段解决了同步错误。文章还分享了在调试过程中的一些意外发现。
843

被折叠的 条评论
为什么被折叠?



