ControlsSource中的VBA函数不会触发

时间:2014-03-18 13:12:47

标签: vba ms-access access-vba ms-access-2010 ms-access-2013

在连续的表格中,我有一个带有controlsource =“= hasDocument([Nr])的复选框”,该函数的定义如下:

Private Function hasDocument(Nr As Variant) As Boolean
    On Error Resume Next

    If IsNull(Nr) Then
        ' pass
    ElseIf err <> 0 Then
        ' pass
    Else
        hasDocument = DExists("ID", "Kurztexte", "Aufwendungs_Nr=" & Nr)
    End If

End Function

大部分时间它都有效,但在某些机器上,函数hasDocument不会触发。 当控件获得焦点时,该函数仅针对该记录在该机器上触发。

使用form.recalc,该函数将触发所有显示的记录。但是当你向下滚动时,Access不会触发新记录的功能。

当我想将此表单用作子表单时,form.recalc的工作方式如上,但随后访问重绘子表单,所有控件再次显示Null。所以,如果该函数从未被解雇..

我做了一个GIF来澄清:

How it looks

此问题仅发生在Access 2010中。使用Access 2013时,表单也会在控件中加载没有值,但在1-2秒后(有点长),hasDocument函数开始为所有记录触发。

重新启动机器通常会让问题消失一段时间,但它会不断弹出。

有没有人建议什么可能导致这种行为?

1 个答案:

答案 0 :(得分:0)

对于遇到同样问题的任何人:Microsoft现在发布一个修复此问题的修补程序。

可以在这里找到: http://support.microsoft.com/kb/2899528