【问题标题】:Proper way to programmatically set database connection for Crystal Reports以编程方式为 Crystal Reports 设置数据库连接的正确方法
【发布时间】:2012-09-20 17:44:41
【问题描述】:

我是 Crystal 报表的新手。我必须在运行时通过代码设置报表的数据源。我有一个工作代码,但它是非常不可预测的,并且一直存在很多问题。我只是想知道我是否做错了什么,或者是否有更好的方法来做到这一点。

有时我觉得报表甚至没有使用连接字符串,而是使用独立 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

【问题讨论】:

  • 您遇到了什么错误?网络上有大量示例向您展示如何将报表连接到数据库。

标签: asp.net vb.net crystal-reports connection-string crystal-reports-xi


【解决方案1】:

这是不久前被问到的,但我想我会在这里发布一个回复,以防其他人正在寻找答案。我刚刚使用了上面的代码,它运行良好......除了一些例外。

我变了:

connectionInfo.ServerName = [Entire ConnectionString?]

到:

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

另外,将循环中的tableLogonInfo 变量初始化为New TableLogOnInfo 是不必要的。

我敢肯定,正如上面 cmets 中所述,那里有很多示例。我只是想我会在这里添加一个答案,因为这是我在寻找解决方案时得到的第一个结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2011-10-22
    • 1970-01-01
    • 1970-01-01
    • 2013-12-12
    • 2015-05-13
    • 2011-01-28
    相关资源
    最近更新 更多