Предоставление данных удостоверения для получения доступа к базе данных

Оценить
(0 голоса)

Если ваш отчет использует безопасную базу данных, скорее всего, потребуется обеспечить передачу данных удостоверения для получения доступа к базе из кода приложения, чтобы пользователю не отображалось повторное приглашение ввести их или чтобы исключить возможность возникновения сбоя в работе приложения, если отчет не связан с модулем просмотра. Модель Report Engine позволяет сделать это несколькими способами. Взгляните на следующий фрагмент кода:

' Предоставление данных удостоверения посредством объектной модели 1 ReportDocument

Report.SetDatabaseLogon("sa", "password")

Эта единственная строка кода передает имя пользователя и пароль каждому источнику данных в отчете, включая и те, что содержатся в подотчетах. Метод SetDatabaseLogon значительно упрощает предоставление данных удостоверения, если в отчете используется только одно соединение с данными.

Вторая версия метода SetDatabaseLogon принимает четыре аргумента:

'Report.SetDatabaseLogon (HsaH, "password11, nSQLServerln, "xtreme**)

Как видите, она позволяет указывать также имя сервера базы данных и имя базы данных, что удобно, когда в отчете используется несколько разных соединений.

При наличии необходимости в более “подробном” способе предоставления данных удостоверения для отдельных объектов таблиц в главном и подчиненных отчетах, вам придется написать более длинный код, например такой:

Dim Logon As New TableLogOnlnfo Dim Tbl As Table

For Each Tbl In Report.Database.Tables Logon = Tbl.LogOnlnfo

Logon.Connectionlnfo.ServerName = "SQLServerl"

Logon.Connectionlnfo.DatabaseName = "xtreme"

Logon.Connectionlnfo.UserlD = "sa"

Logon.Connectionlnfo.Password = "password"

Tbl.ApplyLogOnlnfo(Logon)

Next Tbl

1 Передача данных удостоверения подотчетам Dim Subreport As ReportDocument For Each Subreport In Report.Subreports For Each Tbl In Subreport.Database.Tables Logon = Tbl.LogOnlnfo

Logon.Connectionlnfo.ServerName = "SQLServerl"

Logon.Connectionlnfo.DatabaseName = "xtreme"

Logon.Connectionlnfo.UserlD = "sa"

Logon.Connectionlnfo.Password = "password"

Tbl.ApplyLogOnlnfo(Logon)

Next 'Tbl Next 'Subreport

В этом фрагменте кода сначала определяется класс TableLogonlnf о (из пространства имен Crystal Decisions. Shared) и класс Table (из пространства имен CrystalDecisions .CrystalReports .Engine). Затем каждой таблице в главном отчете с помощью цикла и свойства Connectionlnfo передаются данные удостоверения, необходимые для получения доступа к базе данных.

Что касается подотчетов, для них сначала создается экземпляр класса ReportDocument (из пространства имен CrystalDeciosions .CrystalReports .Engine), который используется для просмотра коллекции Subreports главного отчета. Затем каждому подотчету посредством аналогичных просматривающих коллекцию Database. Tables циклов тоже передаются данные удостоверения.

Этот код будет работать только в версии Crystal Reports 10 или Crystal Reports XI, более ранние версии (включая версию, которая поставляется вместе с VS.NET) коллекцию Subreports не поддерживают. Поэтому для таких версий придется написать более подробный код, например, такой:

crSections = Report.ReportDefinition.Sections

For Each crSection In crSections crReportObjects = crSection.ReportObjects For Each crReportObject In crReportObjects If crReportObject.Kind = ReportObjectKind.SubreportObject Then crSubreportObject = CType(crReportObject, SubreportObject) subrpt = _

crSubreportObj ect.OpenSubreport(crSubreportObj ect.SubreportName)

For Each subtbl In subReport.Database.Tables

str &= subReport.Name & & subtbl.Name & " - " objTableLogonlnfo = subtbl.LogOnlnfo objTableLogonlnfо.Connectionlnfo = objConnlnfo subtbl.ApplyLogOnlnfo(objTableLogonlnfo) subtbl.Location = _ subtbl.Location.Substring(subtbl.Location.LastlndexOf(".") + 1) str &= subtbl.TestConnectivity () & vbCrLf Next End If Next

Next

Настройка формулы выборки записей
Изменение содержимого существующей формулы
Передача значений полям параметров
Передача текста текстовому объекту
Отчеты Crystal Reports как Web-службы XML

Добавить комментарий


Защитный код
Обновить