更新子报告的标签标题

时间:2013-07-05 14:30:45

标签: vba ms-access report

在主报告的Report_Open()子目录中,我有:

SQLstring = "Select * from dbo_NewPatient where id=49"
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset(SQLstring, dbOpenDynaset, dbSeeChanges)

现在我想在子报表中更新Label标题,在我的子报表中我尝试过:

Private Sub Report_Open(Cancel As Integer)

    Labal1.Caption = Me.Parent.rs("index")

End Sub

但是Me.Parent.rs(“index”)不起作用,我已经尝试了多次迭代的Me!,我。[以及类似的东西,但似乎无法找到语法应该是什么。我如何更新这个Label1.Caption?

我将要有多个子报表,这就是为什么我在主报表上有SQL命令,我不想在每个子报表上调用SQL命令。

感谢您的帮助或指导!

2 个答案:

答案 0 :(得分:1)

我不确定你对Recordset的意图是什么,你没有显示做某事的任何代码。

如果您打算设置(主要)报告的Recordset属性,那么我认为这不会起作用:

Me.Recordset = rs

帮助系统对此并不十分清楚,但是在尝试此操作时,Access会显示一条错误,指出此功能仅适用于ADP(已停用的技术)。

我会将报告的RecordSource属性设置为您的sql语句:

Me.RecordSource = sqlString

或者,您可以将其设置为“SELECT * FROM dbo_NewPatient”,并将id为49用作Filter

如果主窗体上的“索引”位于“详细信息”部分中,则无法直接从子报表中引用它。可能会在主要报告的ReportHeader中添加隐藏文本框,该报告引用详细信息部分中的控件:

=[txtIndex]

在子报表的Open中甚至可以引用此控件,假设它被命名为“txtIndex_ref”:

Label1.Caption = Me.Parent.Controls("txtIndex_ref")

答案 1 :(得分:0)

尝试声明一个Public var ..

Public rs As Recordset '--------

SQLstring = "Select * from dbo_NewPatient where id=49"
Set rs = CurrentDb.OpenRecordset(SQLstring, dbOpenDynaset, dbSeeChanges)

所以你可以做到

Private Sub Report_Open(Cancel As Integer)
    lblIndex.Caption = rs("index")
End Sub