访问VBA:当没有源记录时,在文本框中显示特定值

时间:2013-11-12 19:05:27

标签: vba ms-access-2010

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

感谢。

1 个答案:

答案 0 :(得分: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,如果有记录,则为0。

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