|
举个例子,你要单击一个按钮后,打开某一个报表,那么按钮的单击事件过程应如下:
DoCmd.OpenReport "***报表", acViewPreview
如果你的报表记录源和窗体同源,窗体的主键为ID.而你单击按钮后,只想预览一下窗体的当前记录时,代码如下:
DoCmd.OpenReport "***报表", acViewPreview, , "ID=[Forms]![***窗体].[ID]"
还有,利用报表的OpenArgs属性,来指定报表的记录源条件时,窗体上按钮的代码如下:
DoCmd.OpenReport "***报表", acViewPreview, , , , Me.***子窗体.Form.[ID]
这时,报表的Open事件过程应有如下代码:
If Not IsLoaded("***窗体", acForm) Or IsNull(Me.OpenArgs) Then
MsgBox "请从[***窗体]中,按[打印]按钮来启动本报表!~", vbInformation
Cancel = True
Else
Me.RecordSource = "SELECT ××表.* FROM ××表 WHERE (((××表.ID)=" & Me.OpenArgs & "));"
End If
以上这些,不知明了否?
附IsLoaded函数定义:
Function IsLoaded(ByVal strFormName As String, Optional intLeiXing As Long = acForm) As Boolean ' 如果指定窗体或报表打开,返回 True。
Const conObjStateClosed = 0
Const conDesignView = 0
If SysCmd(acSysCmdGetObjectState, intLeiXing, strFormName) <> conObjStateClosed Then
If intLeiXing = acForm Then '如果是窗体
If Forms(strFormName).CurrentView <> conDesignView Then
IsLoaded = True
End If
Else
IsLoaded = True
End If
End If
End Function
|
|