0

我是Crystal报告的新手。我必须在运行时通过代码设置报告的数据源。我有一个工作代码,但它是非常不可预知的,并且一直给出许多问题。我只是想知道我是否做错了什么,或者是否有更好的方法来做到这一点。以编程方式为Crystal Reports设置数据库连接的正确方法

有时我觉得报表甚至没有使用连接字符串,而是使用在独立的Crystal应用程序的报表编译时指定的连接。这是真的?

Dim connectionInfo As New ConnectionInfo 

     connectionInfo.ServerName = "UID=abc;PWD=abc;Driver= {SQL Server};Server=" & Page.Request.QueryString("server") & ";Database=" & Page.Request.QueryString("database") 

Using report As New ReportDocument 
      report.Load(Server.MapPath("/report/Crystal/test.rpt")) 
      report.FileName = Server.MapPath("/report/Crystal/test.rpt") 

      SetDBLogonForReport(connectionInfo, report) 
... 
End Using 

    Private Sub SetDBLogonForReport(ByVal connectionInfo As ConnectionInfo, ByVal reportDocument As ReportDocument) 

     Dim tables As Tables 
     tables = reportDocument.Database.Tables 

     For Each table As CrystalDecisions.CrystalReports.Engine.Table In tables 

      Dim tableLogonInfo As New TableLogOnInfo 

      tableLogonInfo = table.LogOnInfo 
      tableLogonInfo.ConnectionInfo = connectionInfo 
      table.ApplyLogOnInfo(tableLogonInfo) 

     Next 


    End Sub 
+0

你会得到什么错误?网络上有很多示例向您展示如何将报告连接到数据库。 –

回答

2

前一段时间被问到,但我想我会在这里发布回复,以防其他人在寻找答案。我只是使用了上面的代码,它工作得很好......除了少数例外。

我改变:

connectionInfo.ServerName = [Entire ConnectionString?] 

到:

connection.DatabaseName = [DatabaseName] 
connection.UserID = [UserID] 
connection.ServerName = [ServerName] 
connection.Password = [Password] 

而且,在回路中的可变tableLogonInfo初始化为New TableLogOnInfo是不必要的。

我敢肯定,正如上面评论中提到的那样,这里有大量的例子。我只是想我会在这里添加一个答案,因为这是我在寻找解决方案时着手的第一个结果。

相关问题