1.先在水晶的设计器中直接连接 access 数据库用向导方式制作报表,
并存为不带数据的 Report.rpt文件.2.在VB中,添加 CrystalReport1.Dsr 设计器, 添加时选择"来自现有的报表",选择打开 Report.rpt3. 然后 CRViewer91.ReportSource = Report
CRViewer91.ViewReport
就可以显示了. 问题是这个 Report.rpt 报表是直接连到数据库的, 我想用 ADO 数据作报表的数据源怎么做?翻了旧贴子和水晶带的些例子,不太懂, 乱试如下:Dim rst As New ADODB.Recordset
Dim RptRe As New CrystalReport1
Dim Sql As String
Dim pathstr As Stringpathstr = App.Path & "\temp\Report.rpt"Sql = "SELECT * FROM main"rst.CursorLocation = adUseClient
rst.Open Sql, conn, adOpenDynamic, adLockOptimisticRptRe.Application.OpenReport pathstrRptRe.Database.SetDataSource rstWith Me.CRViewer91
.ReportSource = RptRe
.ViewReport
.Zoom 100
End With当然不行, 运行到 RptRe.Database.SetDataSource rst 这行就说类型不匹配
就是没个概念... 求助,没多少分了,大家帮帮忙,谢谢!
并存为不带数据的 Report.rpt文件.2.在VB中,添加 CrystalReport1.Dsr 设计器, 添加时选择"来自现有的报表",选择打开 Report.rpt3. 然后 CRViewer91.ReportSource = Report
CRViewer91.ViewReport
就可以显示了. 问题是这个 Report.rpt 报表是直接连到数据库的, 我想用 ADO 数据作报表的数据源怎么做?翻了旧贴子和水晶带的些例子,不太懂, 乱试如下:Dim rst As New ADODB.Recordset
Dim RptRe As New CrystalReport1
Dim Sql As String
Dim pathstr As Stringpathstr = App.Path & "\temp\Report.rpt"Sql = "SELECT * FROM main"rst.CursorLocation = adUseClient
rst.Open Sql, conn, adOpenDynamic, adLockOptimisticRptRe.Application.OpenReport pathstrRptRe.Database.SetDataSource rstWith Me.CRViewer91
.ReportSource = RptRe
.ViewReport
.Zoom 100
End With当然不行, 运行到 RptRe.Database.SetDataSource rst 这行就说类型不匹配
就是没个概念... 求助,没多少分了,大家帮帮忙,谢谢!
解决方案 »
- 关于timer的问题.请进来解答一下。谢谢!~
- :CreateObject("Scripting.FileSystemObject")错误,急死我了,大家帮我看看,先谢了!!!
- 那么晚了,还有人吗?我怎么调用OS指定窗体,比如说网上邻居、我的电脑等.问题解决马上给分啊
- 请问word的痕迹保留如何做?
- 打印
- 散分了!急需用API制作的播放波行的函数。要求:必须可以定位播放。
- 小弟想学VB,各位大哥帮帮忙!
- 求助:关于WIN2K下的程序到WIN98下运行的问题?(百分相送)
- 谁有用TREEVIEW作的资源管理器################################################
- 如何灰化窗口中的“□”按钮?请教高手!
- 如何破译图片中的数字?
- VB6程序,运行变慢,求原因。
改成:
For i = 1 To RptRe.Database.Tables.Count '设置报表的数据源
If RptRe.Database.Tables.Item(i).Name = "carsort" Then '把carsort改成你建报表时用到的表名
RptRe.Database.Tables(i).SetDataSource rs
End If
Next
改成:
For i = 1 To RptRe.Database.Tables.Count '设置报表的数据源
If RptRe.Database.Tables.Item(i).Name = "carsort" Then '把carsort改成你建报表时用到的表名
RptRe.Database.Tables(i).SetDataSource rst
End If
Next
Adodc1.ConnectionString="连接字符串"
Adodc1.RecordSource = "select * from main"
Adodc1.Refresh
CrystalReport1.Database.SetDataSource Adodc1.Recordset
CrystalReport1.DiscardSavedData
Screen.MousePointer = vbHourglass
CRViewer91.ReportSource = CrystalReport1
CRViewer91.ViewReport
Screen.MousePointer = vbDefault
RptRe.Application.OpenReport pathstr
RptRe.Database.SetDataSource rst
前面加一行:
Set RptRe = Nothing 看可以不?我连的是sql的数据库,但可以,我的如下:Dim Report As New CrystalReport1Private Sub Form_Load()
Set Report = Nothing
Report.Database.SetDataSource rs
Screen.MousePointer = vbHourglass
CRViewer1.ReportSource = Report
CRViewer1.ViewReport
Screen.MousePointer = vbDefaultEnd Sub里面的rs相当于你的rst
Report.Database.SetDataSource rs 这个怎么执行啊
把RptRe.Database.SetDataSource rst
改成:
For i = 1 To RptRe.Database.Tables.Count '设置报表的数据源
If RptRe.Database.Tables.Item(i).Name = "carsort" Then '把carsort改成你建报表时用到的表名
RptRe.Database.Tables(i).SetDataSource rst
End If
Next可是我的查询字串不是查一个表的呀,有链接几个表的查询语句
这是vb6.0动态调用水晶报表的唯一方法,如果采用动态,那么就不依赖任何原始数据源了
现在想用 ado 作数据源, 好像用查询语句不行的