1

我认为,我有一个非常基本的 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] 变量,所以代码还不知道是什么患者姓名是。我该如何纠正这个问题,或者有更好的方法来解决这个问题?

谢谢!

4

3 回答 3

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 ... "
于 2013-06-13T01:41:02.093 回答
0

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

于 2013-06-13T00:03:31.030 回答
0

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

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
于 2013-06-13T00:30:56.777 回答