0

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
4

1 に答える 1

2

これは少し前に尋ねられましたが、他の誰かが答えを探している場合に備えて、ここに応答を投稿すると思いました. 上記のコードを使用したところ、いくつかの例外を除いて正常に機能しました。

私が変更され:

connectionInfo.ServerName = [Entire ConnectionString?]

に:

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

また、tableLogonInfoループ内の変数を toNew TableLogOnInfoに初期化する必要はありませんでした。

上記のコメントで述べたように、そこにはたくさんの例があると確信しています。解決策を探しているときに最初にたどり着いた結果だったので、ここに回答を追加すると思いました。

于 2012-10-12T08:34:49.457 に答える