'必须引用ado及crystal report9 activex designer design time library(internal)
'使用控件 crystal report viewer contral
Dim strsql As String
Dim capp As New CRAXDRT.Application
Dim carp As New CRAXDRT.Report
Dim cn As New ADODB.Connection
Dim rs As New ADODB.Recordset
'报表存放的路径
Set carp = capp.OpenReport(App.Path & "/rptTest.rpt")
If cn.State = adStateOpen Then cn.Close
With cn
.Provider = "sqloledb"
If opt1.Value = True Then
.ConnectionString = "data source=mrp-server;initial catalog=voutmmstdata;user id=sa;password=12345"
Else
.ConnectionString = "data source=mrp-03;initial catalog=test;user id=sa;password="
End If
.Open
End With
'报表设计时并不一定要指定过滤的条件,也就是说没有指定WHERE后的语句
If opt1.Value = True Then
strsql = "select * from mmst011 left join mmst012 on mmst011.order_no=mmst012.order_no where mmst011.order_no in ('00000733','00000737')"
Else
strsql = "select * from mmst011 left join mmst012 on mmst011.order_no=mmst012.order_no where mmst011.order_no in ('00000730','00000731')"
End If
If rs.State = adStateOpen Then rs.Close
With rs
.ActiveConnection = cn
.CursorLocation = adUseClient
.Open strsql, cn, adOpenDynamic, adLockOptimistic
End With
'也可以carp.Database.Tables(1).SetDataSource rs
carp.Database.SetDataSource rs
'以下是传参数的用法,报表上已放有一个名为strName的参数字段
If opt1.Value = True Then
carp.ParameterFields.GetItemByName("strName").AddCurrentValue ("Mrp-server上的订单数据")
Else
carp.ParameterFields.GetItemByName("strName").AddCurrentValue ("mrp-03上的订单数据")
End If
Form3.CRViewer.ReportSource = carp
Form3.CRViewer.ViewReport
Form3.CRViewer.Zoom 100
Form3.Show
End Sub
VB实现报表数据查询与展示
该博客主要展示了使用VB实现报表数据查询与展示的代码。通过引用相关库,使用Crystal Report Viewer控件,连接数据库,根据不同条件执行SQL查询语句获取数据,将数据绑定到报表,还可传递参数,最后在窗体中展示报表。

被折叠的 条评论
为什么被折叠?



