函数不会对更改的参数给出修改结果

时间:2014-10-30 11:23:37

标签: ms-access access-vba

我的表单包含以下内容:

Public Function NumDisc() As Integer

NumDisc = DCount("*", "tblDisclosure", "Not IsNull(ReachedDBS) And ReachedDBS >" & MyDate)

End Function

'MyDate'是一个未绑定的控件。表格的OnLoad事件在十二个月前发布(Date-365)。

目的是在加载时,文本框显示过去12个月内发送给DBS的应用程序数量。

在加载表单时,文本框会显示正确的数字。

我不能做的是让它重新计算来自不同日期的应用程序数量。我尝试过刷新,重新整理和文本框只显示了十二个月的数字。

2 个答案:

答案 0 :(得分:0)

我知道你在form_onload事件中为Mydate控件赋值。 但不清楚: NumDisc功能何时触发? 什么类型的控制是Mydate?

要实现您想要的效果,请将Mydate设为另一个文本框(如果它还不是文本框)。 然后在Mydate文本框的afterupdate事件中添加对NumDisc的调用

从现在开始,当您在Mydate中更改数字并按Enter

时,您应该会得到结果

答案 1 :(得分:0)

您的标题会捕获问题:您的功能没有参数!您可以在函数内部使用表单值,就好像它是一个参数一样。您似乎有一个文本框,其控制源设置为=NumDisc()。由于该功能没有参数,Access优化了它;它认为它只能调用一次,它应该每次都给出相同的结果。如果更改函数定义以包含参数:

Public Function NumDisc(vCompare As Variant) As Integer
    NumDisc = DCount("*", "tblDisclosure", "Not IsNull(ReachedDBS) And ReachedDBS > " & vCompare)
End Function

并将控制源更改为:=NumDisc([Form].[MyDate])然后Access将知道每次[MyDate]更改时都需要调用该函数。