Поиск хранимой процедуры, используемой Crystal Report - PullRequest
5 голосов
/ 25 марта 2010

Мне нужно получить имя хранимой процедуры, в которой запущен отчет Crystal. Есть ли способ сделать это в C # с помощью объекта CrystalDecisions.CrystalReports.Engine.ReportDocument?

Я не могу найти свойство, которое даст мне имя хранимой процедуры.

Это вообще возможно? Я прошел почти все свойства, которые я могу придумать. У объекта DataDefinition есть коллекции для полей формулы, параметра, имени группы и промежуточных итогов, но не для коллекций полей базы данных.

Редактировать: мне нужно делать это программно, так как у меня много отчетов. Мне нужна опция, позволяющая пропустить фактическое выполнение отчета и просто выполнить хранимую процедуру, которую использовал бы отчет. Поэтому, когда информация отчета вставляется в базу данных с помощью программы, я хочу иметь возможность извлечь ее хранимую процедуру и сохранить эту информацию отдельно.

Ответы [ 4 ]

4 голосов
/ 27 марта 2010

Ты будешь пинать себя.SP находятся в ...

ReportDocument.Database.Tables

База данных

затем Table.Location

Таблица

также не забывайте о SubReports ... который является еще одной коллекцией ReportDocuments.

1 голос
/ 26 марта 2010

Вы можете использовать SQLServer Profiler , чтобы зафиксировать, какая хранимая процедура вызывается при запуске отчета Crystal.

Во-первых, вам нужно иметь права, необходимые для запуска профилировщика.
Во-вторых, вам нужно запустить трассировку и немедленно выполнить отчет.
В-третьих, остановите трассировку и сканирование, чтобы увидеть имя хранимой процедуры, выполненной в отчете.

0 голосов
/ 06 июня 2012

Вы можете вывести различные свойства таблицы с помощью этого кода (извините, это в VB, это то, что я должен использовать для этого проекта):

Private Sub logLogOnInfo (таблица в виде таблицы) log.DebugFormat ("LogOnInfo.ConnectionInfo для {0}:", имя таблицы.) 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 ("Имя_сервера: {0}, Пользователь: {2}, Пароль: {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

End Sub

0 голосов
/ 25 марта 2010

Попробуйте этот проект: RptToXml .

...