0

这一直困扰着我一段时间,我似乎无法找到解决它的方法;我目前在表单 (txt1) 上有一个文本框,该文本框的控制源是 Sum() 函数,该函数链接到另一个表单上的另一个文本框 (txt2)。Txt1 对值进行总计,直到有一个查询运行,其中 txt2 所在的表单上没有结果;在这种情况下,因为 txt1 没有记录可以运行 =Sum() 函数,所以它只返回 #Error; 由于 txt1 本身随后涉及 Sum 函数(其结果存储在 txt3 中),由于 txt1 为 #Error,因此 txt3 返回值 #type。我想知道的是,如果没有通过 Sum() 函数传递给它的参数,是否有办法让 txt1 简单地显示“0.00 英镑”。

谢谢。

4

1 回答 1

0

有一个解决方法:

在公共模块中创建一个函数,检查表单/报告是否有任何记录:

Function HasRecords(ByVal xobj As Object) As Boolean
  '
  On Error GoTo ErrorState
  '
  HasRecords = (xobj.RecordsetClone.RecordCount > 0)
  '
  Exit Function
  '
ErrorState:
  HasRecords = False
End Function

然后在包含控件 txt2 的表单的私有模块中,它总结了一个字段,例如,表/查询的数量,

Me.Controls("txt2").ControlSource = "=IIF(HasRecords(Form), SUM(Quantity), 0)"

结果,如果没有记录,则 txt2 的值为 0,如果有则为总和。

由于 txt1 和 txt3 取决于 txt2 的值,所以不会发生错误。

于 2013-11-12T20:40:31.900 回答