我有一个表单(frmNewHours),上面有一些控件用于改变子表单(tblHoursSubform),这是一个数据表视图子表单,包含2个可见的用户列(Project和MTDHours)。我想在主表单上的未绑定字段中显示MTDHours列的小计。
我先尝试了什么:
这首先完美地运行,但是当我继续开发表单时(可能是不相关的细节,但我在主窗体上使用了几个控件来更改子窗体的记录源和子窗体中的项目组合框控件的记录源)小计显示停止工作。我删除了小计控件并以完全相同的方式重新创建它们再次起作用,这对我来说没有任何意义,但我继续。
我完成了对表单的开发并在另一台计算机上进行了测试,并且小计字段再次停止工作(子窗体的控件因某种原因出错)
我接下来尝试了什么:
这在加载表单时有效,但是当子表单中的数据发生更改时,小计不会更新,因此我将以下代码添加到子表单中:
Private Sub Form_Current()
Me.Parent.Controls("Subtotal").Requery
End Sub
虽然这样可行,但刷新小计控件大约需要一秒钟,在此期间控件为空。因此,虽然它是功能性的,但它肯定不能按预期工作。
所以现在我不知道接下来会尝试什么。有没有其他人经历过这个并找到了解决方案?
编辑:搞定了。我稍微回到原来的解决方案,但我将小计的控制源更改为= Nz(Sum([MTDHours]),0)现在没有更多的问题了。
答案 0 :(得分:0)
在第一次尝试中,当你更改了子窗体的记录源时,在Sum控件的属性中丢失了一些东西。 真的,我无法理解为什么它不能在另一台计算机上工作。这没有道理! 当您重新查询子表单时,您更新sum控件。 您还应该重新查询主窗体以获取新值。
第二种解决方案肯定会更慢,因为您使用的是自定义功能而不是嵌入式功能。 如果它是一个简单的总和,您可以尝试使用DSum函数,如果需要,使用主窗体的ID过滤记录集。您可以将DSum函数分配给主窗体的小计控件。 再次查询子后你应该重新查询主要。
请注意,当前不应该是正确的事件,因为您需要在每条记录中强制更新(如果表单不是连续表单,这并不重要)。在触发更新子窗体事件时更新小计会更好。
让我知道它是否有效。
再见