直连数据库拉模式(PULL)的水晶报表编程实现之极简教程
拉模式也就是最基本的水晶报表制作方法,直接连接数据库生成报表。
这个代码其实在水晶报表自带的示例里有的,这里再拿出来讲一下。
创建报表时,输入了数据库服务器的相关参数
但是执行后,出现如下信息提示。您请求的报表需要更多信息。
此时编辑aspx页面对应的代码,将数据库的认证信息赋过去就行了。
代码为:
Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Web
Partial Class _Default
Inherits System.Web.UI.Page
Private myReport As ReportDocument
Private Sub ConfigureCrystalReports()
Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()
myConnectionInfo.DatabaseName = "xxxx"
myConnectionInfo.UserID = "xxx"
myConnectionInfo.Password = "xxxx"
myConnectionInfo.ServerName = "xxxx"
myReport = New ReportDocument()
Dim reportPath As String = Server.MapPath("crystalreport1.rpt")
myReport.Load(reportPath)
CrystalReportViewer1.ReportSource = myReport
SetDBLogonForReport(myConnectionInfo, myReport)
End Sub
Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo, ByVal myReportDocument As ReportDocument)
Dim myTables As Tables = myReportDocument.Database.Tables
For Each myTable As CrystalDecisions.CrystalReports.Engine.Table In myTables
Dim myTableLogonInfo As TableLogOnInfo = myTable.LogOnInfo
myTableLogonInfo.ConnectionInfo = myConnectionInfo
myTable.ApplyLogOnInfo(myTableLogonInfo)
Next
End Sub
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
ConfigureCrystalReports()
End Sub
End Class
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Web
Partial Class _Default
Inherits System.Web.UI.Page
Private myReport As ReportDocument
Private Sub ConfigureCrystalReports()
Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo()
myConnectionInfo.DatabaseName = "xxxx"
myConnectionInfo.UserID = "xxx"
myConnectionInfo.Password = "xxxx"
myConnectionInfo.ServerName = "xxxx"
myReport = New ReportDocument()
Dim reportPath As String = Server.MapPath("crystalreport1.rpt")
myReport.Load(reportPath)
CrystalReportViewer1.ReportSource = myReport
SetDBLogonForReport(myConnectionInfo, myReport)
End Sub
Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo, ByVal myReportDocument As ReportDocument)
Dim myTables As Tables = myReportDocument.Database.Tables
For Each myTable As CrystalDecisions.CrystalReports.Engine.Table In myTables
Dim myTableLogonInfo As TableLogOnInfo = myTable.LogOnInfo
myTableLogonInfo.ConnectionInfo = myConnectionInfo
myTable.ApplyLogOnInfo(myTableLogonInfo)
Next
End Sub
Protected Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
ConfigureCrystalReports()
End Sub
End Class