5

Crystalレポートが実行しているストアドプロシージャの名前を取得する必要があります。CrystalDecisions.CrystalReports.Engine.ReportDocumentオブジェクトを使用してC#でこれを行う方法はありますか?

ストアドプロシージャ名を取得できるプロパティが見つからないようです。

これも可能ですか?私は私が考えることができるほとんどすべての特性を通り抜けてきました。DataDefinitionオブジェクトには、式、パラメーター、グループ名、および現在の合計フィールドのコレクションがありますが、データベースフィールドのコレクションはありません。

編集:私はたくさんの報告があるので、これをプログラムで行う必要があります。レポートの実際の実行をスキップして、レポートで使用されたはずのストアドプロシージャを実行するオプションが必要です。そのため、プログラムを使用してレポート情報をデータベースに挿入するときに、そのストアドプロシージャを引き出して、その情報を個別に保存できるようにしたいと思います。

4

4 に答える 4

4

あなたは自分を蹴るつもりです。SPは...

ReportDocument.Database.Tables

データベース

それからTable.Location

テーブル

また、ReportDocumentsの別のコレクションであるSubReportsも忘れないでください。

于 2010-03-26T21:52:31.090 に答える
1

SQLServer Profilerを使用して、CrystalReportの実行時に呼び出されているストアドプロシージャをキャプチャできます。

まず、プロファイラーを実行するための適切な権限が必要です。
次に、トレースを開始し、すぐにレポートを実行する必要があります。
3番目に、トレースとスキャンを停止して、レポートが実行したストアドプロシージャの名前を確認します。

于 2010-03-25T22:06:02.043 に答える
0

このプロジェクトを試してみてください:RptToXml

于 2010-03-25T20:48:39.573 に答える
0

このコードを使用して、テーブルのさまざまなプロパティを出力できます(VBにあるので、このプロジェクトで使用する必要があります)。

Private Sub logLogOnInfo(table As Table)log.DebugFormat( "LogOnInfo.ConnectionInfo for {0}:"、table.Name)Dim ci As ConnectionInfo = table.LogOnInfo.ConnectionInfo log.Debug(String.Format( "AllowCustomConnection:{0 }、DBName:{1}、IntegratedSecurity:{2} "、ci.AllowCustomConnection、ci.DatabaseName、ci.IntegratedSecurity))log.Debug(String.Format(" ServerName:{0}、User:{2}、Password :{1}、属性: "、ci.ServerName、ci.Password、ci.UserID))

For Each a As NameValuePair2 In ci.Attributes.Collection
    If a.Name = "QE_LogonProperties" Then
        Dim attributes As DbConnectionAttributes = a.Value
        For Each b As NameValuePair2 In attributes.Collection
            log.DebugFormat("        {0}: {1}", b.Name, b.Value)
        Next
    Else
        log.DebugFormat("    {0}: {1}", a.Name, a.Value)
    End If
Next

サブ終了

于 2012-06-05T20:46:22.903 に答える