因此,在 Access Form 或 Report 中,在屏幕上显示比 =[UnitPrice]*[Quantity]
更复杂的动态内容的一个好方法是放入 VBA。
例如在这个简化的示例中,此报表的基础表有两个字段 ShowTax 和 TaxRate。通过制作文本框的控件源 =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 代码中引用字段,除非您已经以常规方式将字段引用为一个字段报告?
我不记得以前遇到过这个限制。还是我有腐败报告? (我尝试了通常的压缩/修复、导出/重新导入报告等)
编辑:
奇怪的是......现在它又开始工作了。而且 - 我很确定 - 报告中没有控制权。这就是为什么我认为这是报告中的腐败。
最佳答案
您需要对表单/报告进行控制。
如果这太困惑,您可以将函数放在模块中并在 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
然后在这个报表和其他的这个字段中设置控件。
关于ms-access - Access Report 不允许我引用 VBA 中的字段,除非它本身就在报告中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3944691/