2010-03-25 47 views
5

我需要檢索Crystal報表正在運行的存儲過程的名稱。有沒有辦法在C#中使用CrystalDecisions.CrystalReports.Engine.ReportDocument對象執行此操作?查找Crystal Report正在使用的存儲過程

我似乎無法找到一個屬性,會給我的存儲過程名稱。

這甚至可能嗎?我經歷了幾乎所有我能想到的屬性。 DataDefinition對象具有公式,參數,組名稱和運行總計字段的集合,但數據庫字段沒有。

編輯:我需要以編程方式做這件事,因爲我有很多報道。我需要跳過報告的實際運行並只執行報告將使用的存儲過程。因此,當使用該程序將報告信息插入到數據庫中時,我希望能夠取出其存儲過程並分別存儲該信息。

+0

就像只是一次或編程?如果它只是一次,我建議你將sql分析器附加到問題的數據庫,調用報告,看看它做了什麼。 – 2010-03-25 17:41:05

+0

以編程方式。實際上我們有幾百個報表,但有些用戶希望直接運行存儲過程,並將結果導出到CSV文件。這適用於幾乎所有的報告,因爲我們對存儲過程有一個標準的命名實踐,但有一些奇怪的情況。我寧願將它從報告中提取出來,放到數據庫的某個地方,而不必保留一份清單。 – Brandon 2010-03-25 18:06:43

回答

4

你會踢自己。 SP的是...

ReportDocument.Database.Tables

DataBase

然後Table.Location

Table

也不要忘了子報表......這是ReportDocuments的另一個集合。

+0

非常感謝。你爲我節省了很多工作,而且我正在踢自己不檢查Table對象:P – Brandon 2010-03-26 22:27:18

1

您可以使用SQLServer的探查捕捉到,當你運行水晶報表被稱爲什麼存儲過程。

首先,您需要擁有運行探查器的正確權限。
其次,您需要開始追蹤並立即執行報告。
第三,停止跟蹤&掃描以查看執行報告的存儲過程的名稱。

+0

感謝您的回答,但我實際上需要以編程方式進行此操作。 – Brandon 2010-03-25 22:55:15

+0

你可以嘗試在像wordpad或xmlnotepad這樣的編輯器中打開報告本身嗎?也許這可能有一些元數據,你可以搜索sproc。 – SoftwareGeek 2010-03-26 18:13:03

0

您可以輸出一個表的各種屬性與此代碼(抱歉,這是在VB中,這就是我要使用此項目):

私人小組logLogOnInfo(表如表) 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},Attributes: 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 

末次

相關問題