在主报告的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命令。
感谢您的帮助或指导!
答案 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