5

我需要检索水晶报表正在运行的存储过程的名称。有没有办法在 C# 中使用 CrystalDecisions.CrystalReports.Engine.ReportDocument 对象来做到这一点?

我似乎找不到可以给我存储过程名称的属性。

这甚至可能吗?我几乎经历了所有我能想到的属性。DataDefinition 对象具有公式、参数、组名称和运行总计字段的集合,但没有数据库字段的集合。

编辑:我需要以编程方式执行此操作,因为我有很多报告。我需要跳过报告的实际运行并只执行报告将使用的存储过程的选项。因此,当使用程序将报表信息插入数据库时​​,我希望能够提取其存储过程并单独存储该信息。

4

4 回答 4

4

你会踢自己的。SP在...

ReportDocument.Database.Tables

数据库

然后Table.Location

桌子

也不要忘记 SubReports...这是 ReportDocuments 的另一个集合。

于 2010-03-26T21:52:31.090 回答
1

您可以使用SQLServer Profiler来捕获运行水晶报表时调用的存储过程。

首先,您需要具有运行探查器的正确权限。
其次,您需要启动跟踪并立即执行报告。
第三,停止跟踪和扫描以查看报告执行的存储过程的名称。

于 2010-03-25T22:06:02.043 回答
0

试试这个项目:RptToXml

于 2010-03-25T20:48:39.573 回答
0

您可以使用此代码输出 Table 的各种属性(对不起,它在 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 回答