【问题标题】:Access report, populate label with results of query访问报告,使用查询结果填充标签
【发布时间】:2013-06-09 05:17:22
【问题描述】:

我认为,我有一个非常基本的 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 是什么。我该如何纠正这个问题,或者有更好的方法来解决这个问题?

谢谢!

【问题讨论】:

    标签: ms-access report vba


    【解决方案1】:

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

    【讨论】:

    • 呃,没错。这是一个标签。嗯,也许把它变成一个田野,让它看起来像一个标签?
    【解决方案2】:

    您的代码可以调整为使用 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
    

    【讨论】:

      【解决方案3】:

      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 我更喜欢文本框方法,那么不需要任何例程:)
      • 这是完美的,谢谢!我将使用 Report_Load() 过程,因为我将进行一些条件检查以了解要放入的内容。这很棒。
      • 糟糕,我很快就联系上了。这种作品。看来我需要在报告设计上添加一个标签,并添加匹配的“PatientName”字段才能使其正常工作,否则我会收到一条错误消息:“Microsoft Office Access 找不到在你的表情”。有没有解决的办法?我不想用不必要的标签填写我的报告。真的只需要一个标签,我将使用 vb 代码进行操作。
      • 如果 PatientName 是表单正在使用的记录集中的字段名称,那么它应该可以工作。不要使用 me.PatientName。只需使用 [PatientName]。
      • 嗯,也许我做错了什么,当我输入 [PatientName](不是我,尝试使用和不使用括号)并且该字段尚未用作报告设计的标签时我收到错误:“Microsoft Office Access 找不到您的表达式中提到的字段 'PatientName'。”如果我将该字段添加为设计上的标签,则它不会出错。你确定这会奏效吗?也许我做错了什么。谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-06
      • 2019-09-19
      • 1970-01-01
      相关资源
      最近更新 更多