'显示子报表
Function showSubReport(ByVal mainReport As ReportClass, ByVal Ds As DataSet, ByVal TableName As String, ByVal SubReportControlName As String)
'Dim SubReport As New ReportDocument()
'SubReport = mainReport.OpenSubreport(SubReportName)
Ds.Tables(0).TableName = TableName
'SubReport.SetDataSource(Ds)
'SubReport.Refresh()
Dim subreportName As String
Dim subreportObject As SubreportObject
Dim subreport As New ReportDocument()
If TypeOf (mainReport.ReportDefinition.ReportObjects.Item(SubReportControlName)) Is SubreportObject Then
subreportObject = mainReport.ReportDefinition.ReportObjects.Item(SubReportControlName)
' 获取子报表名称。
SubReportName = SubreportObject.SubreportName
' 打开子报表作为 ReportDocument。
subreport = SubreportObject.OpenSubreport(SubReportName)
' 预览子报表。
subreport.SetDataSource(Ds)
subreport.Refresh()
End If
End Function
dim oApp as new craxdrt.application
dim oRpt as craxdrt.report
dim orptSub as craxdrt.report
dim rs as adodb.recordset
dim rsSub as adodb.recordset
dim reportname as string
'主表
reportname=app.path & "\mo.rpt"
set rs=m_MO.showMO '读取数据表的一个函数,返回recordset
set orpt=oapp.openreport(reportname,1)
orpt.database.setdatasource rs
orpt.readrecords
'子表
set rssub=m_mo.showMolist
set orptsub=orpt.opensubreport("子表名")
orptsub.database.setdatasource rssub
orptsub.readrecords