访问报告不允许我引用VBA中的字段,除非它本身就在报告中

时间:2010-10-15 17:46:01

标签: ms-access vba

因此,在“访问表单”或“报表”中,在屏幕上显示比=[UnitPrice]*[Quantity]更复杂的动态内容的好方法是放入VBA。

e.g。在此简化示例中,此报告的基础表有两个字段 ShowTax TaxRate 。通过创建TextBox的控件源=GetTaxInfo,我将在VBA中引入一些复杂性:

Public Function GetTaxInfo() As String

    Dim result As String
    If Me!ShowTax = 0 Then
        result = "Tax included @ " & Me!TaxRate

    Else
        result = ""
    End If

    GetTaxInfo = result

End Function

好的,这个工作......只要我在其他地方有一个引用TaxRate的字段。否则只打印#Error。就好像它需要预加载字段才能在VBA代码中使用它。它不是世界末日,因为我可以在报告中将一堆字段设置为不可见,但它不整洁。

因此,您不能在支持报告的VBA代码中引用字段,除非您已经将以传统方式引用该字段作为字段烘焙到报告?

我不记得以前遇到过这个限制。还是我有一个腐败的报告? (我尝试了通常的压缩/修复,导出/重新导入报告等)

修改

奇怪的是......现在又恢复了工作。并且 - 我很确定 - 报告中没有控制权。这就是为什么我认为这是报告中的腐败。

1 个答案:

答案 0 :(得分:4)

您需要对表单/报表进行控制。

如果这太乱了,你可以将函数放在Module中并在RecordSource中使用(基于查询)。当它可以在其他地方使用时,没有意义将所有这些逻辑掩盖在报告中。

Public Function GetTaxInfo(ShowTax as Boolean, TaxRate as Single) As String 

    Dim result As String 
    If ShowTax = 0 Then 
        result = "Tax included @ " & TaxRate 

    Else 
        result = "" 
    End If 

    GetTaxInfo = result 

End Function 

然后在此报告和其他人中将控件设置为此字段。