水晶报表论坛里现成的代码都不行,期盼高手指点
环境:
windows 2000 server+crystal report8.5+sql server2000企业版
首先设计了一个最简单的报表,只有一个字段,设计时首先通过数据库ole db连接到数据库,并选择任意一个表的任意一个字段,另存为report1.rpt文件
然后建立一个vb工程并在窗体上放一个按钮然后引用预览控件,在按钮click事件中输入以下代码:
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim capp As New CRAXDRT.Application
Dim carp As New CRAXDRT.Report
conn.Open "provider=sqloledb.1;uid=sa;pwd=123;database=zyddb;server=."
rs.Open "select * from b_bjcgrk", conn, 3
Set carp = capp.OpenReport("D:\Work\Company\test\report1.rpt")
carp.Database.Tables(1).SetLogOnInfo ".", "zyddb", "sa", "123"
carp.DiscardSavedData
carp.Database.SetDataSource rs
CRViewer1.ReportSource = carp
CRViewer1.Refresh
CRViewer1.ViewReport
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
Set capp = Nothing
Set carp = Nothing
问题出现:
1.在CRViewer1.Rdfresh出现错误:对象 'Refresh' 的方
法 'ICrystalReportViewer4' 失败
2.去掉数据库连接和记录集打开代码报表照样显示且显示的内容相同,代码如下:
Dim conn As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim capp As New CRAXDRT.Application
Dim carp As New CRAXDRT.Report
Set carp = capp.OpenReport("D:\Work\Company\test\report1.rpt")
CRViewer1.ReportSource = carp
CRViewer1.ViewReport
Set rs = Nothing
Set conn = Nothing
3.很多贴子代码中都没有我所写的carp.Database.Tables(1).SetLogOnInfo ".", "zyddb", "sa", "123"这个难道能正常运行?我的代码如果去掉这个报表显示出来后报错:server has not yet been opened
另外以前我一直是在程序内设计报表的,就是那种dsr文件,操作起来很简单,但是会被编译到exe中,所以希望改为调用rpt文件,请高手指教。