访问报告,使用查询结果填充标签

时间:2013-06-12 22:41:45

标签: ms-access report access-vba

我认为,这是一个非常基本的Access文件,带有报告。该报告基于查询。查询是:

SELECT * FROM dbo_NewPatient WHERE id=[Patient to view];

这很好用,并提示我输入id,我输入Id,结果就是我想看的病人。现在我想构建一个基于此查询的报表,但我想在报表上创建一个标签,从结果中填充数据,所以我有这个代码:

Private Sub Report_Open(Cancel As Integer)
    Label2.Caption = "Patient Name is " & PatientName & " his time in hospital is ... "
End Sub

我希望“PatientName”变量是查询返回的数据。我已经尝试过PatientName.Value和PatientName.Text,但每次都会收到一条错误消息:

 'The expression you entered has a field, control, or property name that Microsoft Office Access can't find'.

我假设它不知道“PatientName”是什么,也许是因为当我双击打开报告时,我还没有提示[Patient to view]变量,所以代码没有但是知道PatientName是什么。我怎样才能纠正这个问题,还是有更好的方法来解决这个问题?

谢谢!

3 个答案:

答案 0 :(得分:4)

2个答案。

首先,在您的代码中:

Label2.Caption = "Patient Name is " & PatientName & " his time in hospital is ... "

将其移至Private Sub Report_Load()程序。然后,Access将知道PatientName的值。

或者,您可以在报表设计器中指定它。但是,您无法使用标签执行此操作,但您可以使用文本框。只需锁定文本框控件,它就像标签一样。将它放在Control Source属性中,在其前面加上一个=,并在括号中加上括号。所以......

="Patient Name is " & [PatientName] & " his time in hospital is ... "

答案 1 :(得分:0)

听起来不是在VBA代码中执行此操作,而只是想将查询中的列(PatientName)绑定到报表中的标签。不要在VBA代码中执行此操作,请在报表设计器中执行此操作。

答案 2 :(得分:0)

您的代码可以调整为使用我来访问患者姓名字段

Private Sub Report_Open(Cancel As Integer)
    Label2.Caption = "Patient Name is " & Me!PatientName & " his time in hospital is ... "
End Sub

编辑: 有人指出你不能在公开赛上做到这一点。如果您有多个记录可以使用,还有另一个可以点击的事件。您可以像这样使用该组头部绘制事件。 (我甚至测试过它......)

Private Sub GroupHeader0_Paint()
    Label2.Caption = "Patient Name is " & Me!PatientName & " his time in hospital is ... "
End Sub