«Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Содержание 1 Руководство SAP Crystal Reports.NET SDK Developer Guide............................ 4 1.1 Начало ...»
Session("hierarchicalGroupingReport") = hierarchicalGroupingReport Session["hierarchicalGroupingReport"] = hierarchicalGroupingReport;
3. Наконец, добавьте к методу ConfigureCrystalReports() вызов, который забирает последний экземпляр hierarchicalGroupingReport из Session (тот, который вы только что обновили), и свяжите его с элементом управления CrystalReportViewer.
ConfigureCrystalReports() ConfigureCrystalReports();
Результаты Теперь можно проверить, успешно ли сохраняются изменения сортировки.
1.5.2.1.5 Проверка и определение успешности сохранения В этом разделе вы проверите, успешно ли сохраняются изменения сортировки, когда для сохранения используется Session.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.1.5.1 Проверка успешности сохранения изменений сортировки Процедура 1. В меню Построение выберите команду Построение решения.
В случае возникновения ошибок сборки сразу исправьте их.
2. В меню Отладка выберите команду Начать.
Если ошибок сборки не обнаружено, страница Default.aspx загружается в вашем браузере, вместе с созданным в форме отчетом иерархического группирования.
3. Внимательно наблюдайте за порядком сортировки. Возможно, понадобится распечатать страницу, чтобы сравнить изменения в порядке сортировки.
4. Нажмите кнопку Сортировка по убыванию.
Порядок сортировки изменяется на противоположный.
5. На панели инструментов в отчете измените масштаб со 100% на 125%.
Страница перезагрузит отчет в масштабе 125%. Смена порядка сортировки сохраняется.
6. Нажмите кнопку Сортировка по возрастанию.
Порядок сортировки восстанавливается.
7. На панели инструментов в отчете измените масштаб со 125% на 100%.
Страница перезагрузит отчет в масштабе 100%. Порядок сортировки сохраняет параметры с предыдущего шага.
Результаты Из этой проверки видно, что сохранение теперь происходит успешно.
1.5.2.2 Учебное пособие: вход в защищенную базу данных SQL Server с помощью аутентификации SQL.
В этом учебном пособии описывается способ добавления кода входа в систему для отображения отчета, содержащего информацию из защищенной базы данных SQL Server.
Вступление Для входа в защищенную базу данных SQL Server используются классы из объектной модели ReportDocument.
Объект ReportDocument имеет свойство Database, которое возвращает экземпляр Database. Этот экземпляр Database содержит информацию из базы данных для отчета, включая свойство Tables, которое Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide возвращает экземпляр индексированного класса Tables. Отдельные экземпляры Table можно извлечь из индексированного класса Tables.
Вход происходит на гранулярном уровне каждого экземпляра Table, которому необходимо дать индивидуальный доступ к защищенному серверу SQL. Это делается путем размещения сведений для входа в экземпляре ConnectionInfo, а затем, в цикле for, путем применения этого экземпляра ConnectionInfo к свойству ConnectionInfo каждого из экземпляров Table.
Свойства класса ConnectionInfo содержат следующие элементы:
ServerName DatabaseName Password IntegratedSecurity (не используется в этом учебном пособии) Если вы хотите пройти учебное пособие, в котором используется аутентификация Windows (и таким образом использует свойство IntegratedSecurity вместо свойств UserID и Password), см. раздел Учебное пособие: вход в защищенную базу данных SQL Server с помощью интегрированной защиты. [стр. 373].
Если установить только свойства DatabaseName, UserID и Password, то вы войдете на сервер по умолчанию и в базу данных, указанные в отчете. Однако если назначить другое свойство ServerName, можно перенаправить отчет на другой сервер во время выполнения.
Начнем с создания отчета, содержащего данные из защищенной базы данных сервера SQL.
Завершить это учебное пособие можно с использованием классов объектной модели CrystalReportViewer;
однако рекомендуется объектная модель ReportDocument.
Примеры кода Данное учебное пособие содержит образцы кода на языках Visual Basic и C#, демонстрирующие готовую версию проекта. Следуя инструкциям пособия, создайте новый проект или откройте проект примера кода, чтобы начать работу с завершенной версией.
Примеры кода хранятся в папках, упорядоченных по языку и типу проекта. Ниже приведены имена папок для каждой версии примера кода.
Веб-сайт C#: CS_Web_RDObjMod_DBLogon Windows-проект C#: CS_Win_RDObjMod_DBLogon Веб-сайт Visual Basic: VB_Web_RDObjMod_DBLogon Windows-проект Visual Basic: VB_Win_RDObjMod_DBLogon Связанные сведения Выбор правильной объектной модели для проекта [стр. 32] © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Учебное пособие: вход в защищенную базу данных SQL Server [стр. 247] В этом учебном пособии описывается способ добавления кода входа в систему для отображения отчета, содержащего информацию из защищенной базы данных SQL Server.
Каталог образцов отчетов [стр. 15] 1.5.2.2.1 Создание отчета, соединенного с защищенной базой данных SQL Server Для начала создайте отчет, который черпает информацию из базы данных Northwind.
Northwind — это образец базы данных, поставляемый вместе с SQL Server.
Для подготовки к этому учебнику необходима определенная настройка.
Связанные сведения Учебное пособие: вход в защищенную базу данных SQL Server с помощью аутентификации SQL. [стр. 355] В этом учебном пособии описывается способ добавления кода входа в систему для отображения отчета, содержащего информацию из защищенной базы данных SQL Server.
1.5.2.2.1.1 Предварительная настройка базы данных Процедура 1. Конфигурация SQL Server:
Если установлен SQL Server (или OEM-версия, MSDE), то для работы с этим учебником он должен быть сконфигурирован для приема аутентификации SQL Server.
Если SQL Server (или OEM-версия, MSDE) не установлен, то для работы с этим учебником необходимо установить MSDE с заданный параметром "True" для аутентификации SQL Server.
2. База данных Northwind, поставляемая с SQL Server, должна быть установлена и готова к приему аутентификации SQL Server.
3. Необходимо создать учетную запись с ограниченным доступом для использования в пределах вебсайта.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.2.1.2 Создание отчета с защищенными данными из базы данных Northwind Контекст Данная процедура работает только с проектами, созданными из Настройка проекта [стр. 16]. Настройка проекта включает специальные ссылки на пространство имен и конфигурацию кода, необходимую для выполнения данной процедуры. Выполнение процедуры без этой конфигурации невозможно.
Процедура 1. В Проводнике решений щелкните правой кнопкой мыши имя проекта, выделенное жирным шрифтом, укажите пункт Добавить, а затем выберите команду Добавить новый элемент.
2. В диалоговом окне Добавление нового элемента в представлении Шаблоны выберите шаблон Crystal 3. В поле Имя введите имя "NorthwindCustomers.rpt" и нажмите кнопку Открыть.
4. На панели Создание нового документа Crystal Report диалогового окна Галерея Crystal Reports выберите С помощью мастера отчетов.
5. На панели Выбор эксперта выберите элемент Стандартный. Нажмите кнопку ОК.
Откроется окно мастера создания стандартных отчетов.
6. На панели Доступные источники данных разверните папку Создать новое соединение.
7. В открывшейся подпапке разверните папку OLE DB (ADO).
Откроется окно "OLE DB (ADO)".
8. Выберите элемент Поставщик Microsoft OLE DB для SQL Server и нажмите кнопку Далее.
9. В полях Сервер, Идентификатор пользователя и Пароль введите значения сервера базы данных, идентификатора пользователя и пароля.
10. В раскрывающемся списке База данных выберите элемент "Northwind".
Не устанавливайте флажок "Интегрированная защита", так как вместо аутентификации NT используется аутентификация SQL Server.
11. Нажмите кнопку Завершить.
Откроется папка "OLE DB", отображая сервер баз данных и базу данных Northwind на нем.
12. Разверните узлы Northwind, dbo и Таблицы, а затем выберите таблицу Клиенты.
13. Щелкните символ > для перемещения таблицы на панель Выбранные таблицы, а затем нажмите кнопку 14. Удерживая клавишу Ctrl, щелкните элементыНазвание компании, Имя контакта и Город.
15. Нажмите значок >, чтобы переместить эти поля в панель Отображаемые поля, а затем нажмите кнопку 16. На панели Доступные поля в разделе Поля отчета выберите пункт Customer.City, затем щелкните символ > для перемещения этого поля на панель Группировать по, после чего нажмите кнопку Готово.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Будет создан отчет NorthwindCustomers, который будет загружен в главное окно программы Visual Результаты Теперь можно связать отчет с элементом управления CrystalReportViewer и задать программно вход в базу данных.
В Настройка проекта [стр. 16] мы поместили элемент управления CrystalReportViewer на веб- или Windowsформу. На предыдущем этапе в проект был добавлен отчет NorthwindCustomers.
В этом разделе будет создан экземпляр отчета NorthwindCustomers и связан с элементом управления CrystalReportViewer. Затем выполняется проверка правильности отображения отчета при неустановленных текущих значениях его поля параметра.
Создать и связать экземпляр отчета можно двумя способами:
Как встроенный отчет.
Как невстроенный отчет.
Выберите одну из пошаговых процедур, приведенных ниже.
Если вы используете встроенные отчеты, выполните следующую пошаговую процедуру для создания отчета встроенного типа.
Если вы используете невстроенные отчеты, выполните вторую пошаговую процедуру для создания отчета невстроенного типа.
1.5.2.2.2.1 Создание экземпляра встроенного отчета NorthwindCustomers и связывание его с элементом управления CrystalReportViewer Процедура 1. Откройте веб-форму или форму Windows.
2. В меню Вид выберите команду Код.
3. Добавьте новое объявление на уровне класса для класса-обертки отчета NorthwindCustomers с использованием имени переменной northwindCustomersReport. Установите для него модификатор доступа private.
Private northwindCustomersReport As NorthwindCustomers Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide private NorthwindCustomers northwindCustomersReport;
4. Внутри метода ConfigureCrystalReports() создайте экземпляр класса обертки отчета.
Создан метод ConfigureCrystalReports() в Настройка проекта [стр. 16].
northwindCustomersReport = New NorthwindCustomers() northwindCustomersReport = new NorthwindCustomers();
5. На следующей строке под созданием экземпляра отчета свяжите свойство ReportSource элемента управления CrystalReportViewer с созданным экземпляром класса отчета (имя переменной:
northwindCustomersReport).
myCrystalReportViewer.ReportSource = northwindCustomersReport crystalReportViewer.ReportSource = northwindCustomersReport;
Результаты Все готово к сборке и запуску проекта. Ожидается, что загрузить отчет не удастся, так как код для входа в базу данных еще не создан.
1.5.2.2.2.2 Создание экземпляра невстроенного отчета NorthwindCustomers и связывание его с элементом управления CrystalReportViewer Процедура 1. Откройте веб-форму или форму Windows.
2. В меню Вид выберите команду Код.
3. Добавьте новое объявление на уровне класса для класса-обертки отчета NorthwindCustomers с использованием имени переменной northwindCustomersReport. Установите для него модификатор доступа private.
Private northwindCustomersReport As ReportDocument © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide private ReportDocument northwindCustomersReport;
Класс ReportDocument является элементом пространства имен CrystalDecisions.CrystalReports.Engine. Объявление "Imports" [Visual Basic] или "using" [C#] добавлено для этого пространства имен в Настройка проекта [стр. 16]. Создание экземпляра ReportDocument и загрузка отчета в пространство имен позволяют получить доступ к отчету с помощью SDK, не встраивая этот отчет.
4. Внутри метода ConfigureCrystalReports() (созданного в Настройка проекта [стр. 16]) создайте экземпляр класса ReportDocument.
northwindCustomersReport = New ReportDocument() northwindCustomersReport = new ReportDocument();
5. Объявите строковую переменную с именем reportPath и назначьте для нее путь исполняемого модуля, ведущий к локальному отчету. Этот путь определяется по-разному для веб-сайтов и для проектов Windows.
Для веб-сайта передайте имя локального файла отчета в виде строкового параметра в метод Server.MapPath(). Это определит расположение локального отчета как путь к каталогу на жестком диске во время выполнения.
Dim reportPath As String = Server.MapPath("NorthwindCustomers.rpt") string reportPath = Server.MapPath("NorthwindCustomers.rpt");
Для проекта Windows соедините свойство Application.StartupPath с обратной косой чертой и именем файла локального отчета. Это определит расположение отчета в том же каталоге, что и исполняемый файл Windows.
Во время компиляции отчет будет скопирован в каталог, который содержит исполняемый файл.
Dim reportPath As String = Application.StartupPath & "\" & "NorthwindCustomers.rpt" string reportPath = Application.StartupPath + "\\" + "NorthwindCustomers.rpt";
6. Вызовите метод Load() экземпляра ReportDocument и передайте в него строковую переменную reportPath.
northwindCustomersReport.Load(reportPath) Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide northwindCustomersReport.Load(reportPath);
7. Свяжите свойство ReportSource элемента CrystalReportViewer с экземпляром ReportDocument.
myCrystalReportViewer.ReportSource = northwindCustomersReport crystalReportViewer.ReportSource = northwindCustomersReport;
1.5.2.2.2.3 Тестирование загрузки отчета NorthwindCustomers Контекст Вне зависимости от того, было ли выбрано создание класса встроенных отчетов или создание невстроенного отчета при помощи класса ReportDocument, используется одно и то же имя переменной:
northwindCustomersReport. Это позволяет использовать в последующих процедурах один и тот же код.
Все готово к сборке и запуску проекта. Ожидается, что загрузить отчет не удастся, так как код для входа в базу данных еще не создан.
Процедура 1. В меню Построение выберите команду Построение решения.
2. В случае возникновения ошибок сборки сразу исправьте их.
3. Если в проекте Windows используется невстроенный отчет, найдите скомпилированный исполняемый файл Windows в подкаталоге \bin\ [Visual Basic] или \bin\debug\ [C#] и скопируйте отчет в этот подкаталог.
Чтобы невстроенный отчет загружался исполняемым файлом Windows во время выполнения, отчет должен храниться в том же каталоге, что и исполняемый файл Windows.
4. В меню Отладка выберите команду Начать.
Отчет NorthwindCustomers не отображается, поскольку не был добавлен код входа в базу данных.
Результаты могут различаться в зависимости от используемой версии SAP Crystal Reports.
Например, если установлена версия SAP Crystal Reports 10 или выше, появляется форма и запрашивается ввод сведений для входа в базу данных для этого отчета. Это новая функция SAP Crystal Reports Developer. Если установлена предыдущая версия SAP Crystal Reports, возникнет © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide исключение. В любом случае необходимо выполнить следующую пошаговую процедуру для создания полнофункционального приложения.
5. Вернитесь в среду Visual Studio и нажмите кнопку Остановить, чтобы выйти из режима отладки.
Теперь все готово для добавления кода входа в класс code-behind. Начните с создания вспомогательного private-метода, SetDBLogonForReport().
1.5.2.2.3.1 Создание и кодирование метода SetDBLogonForReport() Процедура 1. Вернитесь в класс code-behind для этой веб-формы или формы Windows.
2. Внизу класса создайте новый private-метод с именем SetDBLogonForReport() и двумя параметрами, ConnectionInfo и ReportDocument.
Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo, ByVal myReportDocument As ReportDocument) private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument reportDocument) 3. В этом методе извлеките экземпляр Tables из свойства Tables свойства Database параметра ReportDocument.
Tables представляет собой индексированный класс, который содержит экземпляры класса Table.
Dim myTables As Tables = myReportDocument.Database.Tables Tables tables = reportDocument.Database.Tables;
4. Создайте цикл foreach, который проходит по каждому экземпляру Table в экземпляре индексированного класса Tables.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Необходимо включить полный путь пространства имен к классу Table, чтобы отличить его от класса Table в пространстве имен System.Web.UI.WebControls.
For Each myTable As CrystalDecisions.CrystalReports.Engine.Table In myTables foreach(CrystalDecisions.CrystalReports.Engine.Table table in tables) 5. В цикле foreach извлеките экземпляр TableLogonInfo из свойства LogOnInfo экземпляра Table.
Dim myTableLogonInfo As TableLogOnInfo = myTable.LogOnInfo TableLogOnInfo tableLogonInfo = table.LogOnInfo;
6. В цикле foreach задайте для свойства ConnectionInfo объекта TableLogonInfo параметр ConnectionInfo.
myTableLogonInfo.ConnectionInfo = myConnectionInfo tableLogonInfo.ConnectionInfo = connectionInfo;
7. В цикле foreach передайте экземпляр TableLogonInfo как параметр в метод ApplyLogonInfo экземпляра Table.
myTable.ApplyLogOnInfo(myTableLogonInfo) table.ApplyLogOnInfo(tableLogonInfo);
Результаты С помощью этой пошаговой процедуры был создан метод настройки входа в базу данных. Однако необходимо изменить метод ConfigureCrystalReports() для обращения к этому методу, чтобы в отчете отображалось наличие сведений для входа в базу данных.
Для изменения метода ConfigureCrystalReports() необходимы два действия:
Конфигурирование экземпляра ConnectionInfo.
Вызов метода SetDBLogonForReport().
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.2.3.2 Изменение метода ConfigureCrystalReports() для обращения к коду входа в базу данных Процедура 1. В методе ConfigureCrystalReports() создайте несколько разрывов строк в указанном выше коде, который связывает отчет с элементом управления CrystalReportViewer.
2. В разрывах строк объявите и инициализируйте класс ConnectionInfo.
Чтобы класс ConnectionInfo был доступен, включите выражение "Imports" [Visual Basic] или "using" [C#] вверху класса code-behind для пространства имен CrystalDecisions.Shared. (Это объявление было добавлено в разделе Настройка проекта [стр. 16].) Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo() ConnectionInfo connectionInfo = new ConnectionInfo();
3. Задайте свойства DatabaseName, UserID и Password в экземпляре ConnectionInfo.
В целях безопасности необходимо использовать учетную запись базы данных с ограниченными разрешениями доступа.
В создаваемом коде замените пароль "1234" (показан ниже) новым паролем.
myConnectionInfo.DatabaseName = "Northwind" myConnectionInfo.UserID = "limitedPermissionAccount" myConnectionInfo.Password = " connectionInfo.DatabaseName = "Northwind";
connectionInfo.UserID = "limitedPermissionAccount";
connectionInfo.Password = " 4. Введите вызов метода SetDBLogonForReport(), передав экземпляр ConnectionInfo и отчет NorthwindCustomers.
SetDBLogonForReport(myConnectionInfo, northwindCustomersReport) SetDBLogonForReport(connectionInfo, northwindCustomersReport);
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Результаты Затем следует первоначальный код, который связывает отчет с элементом управления CrystalReportViewer.
Все готово к сборке и запуску проекта. Отчет должен правильно загрузиться, так как был добавлен код для входа в базу данных.
1.5.2.2.3.3 Тестирование загрузки отчета NorthwindCustomers Процедура 1. В меню Построение выберите команду Построение решения.
2. В случае возникновения ошибок сборки сразу исправьте их.
3. В меню Отладка выберите команду Начать.
Отчет NorthwindCustomers отображается успешно.
4. Вернитесь в среду Visual Studio и нажмите кнопку Остановить, чтобы выйти из режима отладки.
Результаты Отчет NorthwindCustomers отображается успешно.
1.5.2.2.4 Добавление возможности изменения расположения базы данных во время выполнения В этом разделе рассказывается о том, как изменить расположение базы данных во время выполнения. Это потребует незначительных изменений экземпляра ConnectionInfo.
1.5.2.2.4.1 Изменение расположения базы данных во время выполнения Процедура 1. В методе ConfigureCrystalReports() создайте несколько разрывов строк в коде после строки, в которой объявляется и инициализируется класс ConnectionInfo.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 2. В разрывах строк задайте свойство ServerName экземпляра ConnectionInfo.
В написанном коде замените образец имени сервера DevDatabase (как показано ниже) именем конкретного сервера.
myConnectionInfo.ServerName = "DevDatabase" connectionInfo.ServerName = "DevDatabase";
1.5.2.2.4.2 Тестирование возможности переключения отчета на альтернативный сервер баз данных во время выполнения Контекст Все готово к сборке и запуску проекта. Отчет должен перенаправиться на альтернативный сервер баз данных во время выполнения.
Процедура 1. В меню "Построение" выберите команду Построение решения.
2. В случае возникновения ошибок сборки сразу исправьте их.
3. В меню Отладка выберите команду Начать.
Отчет NorthwindCustomers отображается успешно.
4. Вернитесь в среду Visual Studio и нажмите кнопку Остановить, чтобы выйти из режима отладки.
1.5.2.2.5 Приложение: Улучшения в коде входа в базу данных Код для изменения расположения базы данных во время выполнения введен успешно. В этом примере сервер базы данных тот же, единственное отличие, что он вызывался явно по имени.
Однако теперь можно указать в строке сервера баз данных любой другой сервер, содержащий базу данных Northwind. При использовании SAP Crystal Reports с Visual Studio 2005 или 2008 у вас есть доступ к расширенному интерфейсу API для входа в защищенную базу данных SQL Server. Интерфейс SAP Crystal Reports API помогает минимизировать количество кода, необходимое для входа в базу данных.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide В предыдущих процедурах вы научились создавать вспомогательный метод SetDBLogonForReport(), который использует цикл foreach для задания свойстваConnectionInfo в каждой таблице отчета Crystal.
В этом учебном пособии вы научитесь удалять вспомогательный метод и добавлять код для использования либо класса DataSourceConnections из пространства имен CrystalDecisions.Shared, либо метода SetDatabaseLogon() из класса ReportDocument.
Класс DataSourceConnections представляет собой список ArrayList, содержащий экземпляры ConnectionInfo для каждого соединения, используемого в отчете Crystal. Можно извлечь экземпляры ConnectionInfo по указанному индексу и вызвать SetLogon() или SetConnection() для передачи отчету сведений для входа.
Метод SetLogon() позволяет задать имя пользователя и пароль. Этот метод использует указанные в отчете сервер и базу данных по умолчанию. Метод SetConnection() позволяет задать имя сервера, имя базы данных, имя пользователя и пароль.
Для использования нового кода API необходимо выполнить инструкции из разделов Создание отчета, соединенного с защищенной базой данных SQL Server [стр. 357] и Связывание отчета [стр. 359].
Затем можно использовать один из следующих методов расширенного интерфейса API:
Использование класса DataSourceConnections для входа в базу данных [стр. 369] Использование метода SetDatabaseLogon() класса ReportDocument [стр. 372] Если вы завершили все процедуры из раздела Учебное пособие: вход в защищенную базу данных SQL Server с помощью аутентификации SQL. [стр. 355], то необходимо сначала удалить определенные строки кода, показанные в разделе Изменение проекта для входа в базу данных [стр. 368], прежде чем использовать один из методов расширенного интерфейса API.
1.5.2.2.5.1 Изменение проекта для входа в базу данных Если вы выполнили все процедуры раздела Учебное пособие: вход в защищенную базу данных SQL Server с помощью аутентификации SQL. [стр. 355], необходимо сначала удалить определенные строки кода, указанные в следующий процедуре.
1.5.2.2.5.1.1 Изменение проекта для использования расширенного интерфейса SAP Crystal Reports API Процедура 1. Откройте завершенный проект, как описано в данном пособии.
2. Откройте веб-форму или форму Windows.
3. В меню Вид выберите команду Код.
4. Удалите вспомогательный метод SetDBLogonForReport().
5. В методе ConfigureCrystalReports() удалите следующие строки кода:
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide a) Удалите код, который объявляет экземпляр класса ConnectionInfo.
b) Удалите код, использующий свойства ServerName, DatabaseName, UserID и Password из класса c) Удалите вызов метода SetDBLogonForReport().
Результаты Теперь метод ConfigureCrystalReports() содержит две строки кода.
Private Sub ConfigureCrystalReports() northwindCustomersReport = new NorthwindCustomers() myCrystalReportViewer.ReportSource = northwindCustomersReport private void ConfigureCrystalReports() northwindCustomersReport = new NorthwindCustomers();
crystalReportViewer.ReportSource = northwindCustomersReport;
Далее можно выбрать использование одного из следующих методов расширенного API:
Использование класса DataSourceConnections для входа в базу данных [стр. 369] Использование метода SetDatabaseLogon() класса ReportDocument [стр. 372] 1.5.2.2.5.2 Использование класса DataSourceConnections для входа в базу данных В этом разделе вы научитесь добавлять две строки кода для входа в базу данных SQL Server. Необходимо извлечь экземпляр DataSourceConnections и задать сведения для входа в базу данных с помощью SetLogon() или SetConnection().
Необходимо создать проект, как указано в инструкциях разделов Создание отчета, соединенного с защищенной базой данных SQL Server [стр. 357] и Связывание отчета [стр. 359].
Или же проект должен быть создан, исходя из инструкций в разделе Изменение проекта для входа в базу данных [стр. 368].
Если вы хотите использовать сервер и базу данных по умолчанию, вызовите метод SetLogon() с именем пользователя и паролем.
Иначе, если требуется изменить сервер или базу данных, вызовите метод SetConnection() с именем сервера, именем базой данных, именем пользователя и паролем.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.2.5.2.1 Использование метода SetLogon() в классе DataSourceConnections Процедура 1. Между двумя строками кода внутри ConfigureCrystalReports() извлеките экземпляр DataSourceConnections из свойства DataSourceConnections экземпляра NorthwindCustomers.
Dim myDataSourceConnections As DataSourceConnections = northwindCustomersReport.DataSourceConnections DataSourceConnections dataSourceConnections = northwindCustomersReport.DataSourceConnections;
2. Извлеките IConnectionInfo по индексу 0 экземпляра DataSourceConnections.
Dim myConnectInfo As IConnectionInfo = myDataSourceConnections(0) IConnectionInfo connectInfo = dataSourceConnections[0];
3. Вызовите метод SetLogon() с вашими именем пользователя и паролем.
В целях безопасности необходимо использовать учетную запись базы данных с ограниченными разрешениями доступа.
В создаваемом коде замените пароль "1234" (показан ниже) новым паролем.
myConnectInfo.SetLogon("limitedPermissionAccount", "1234") connectInfo.SetLogon("limitedPermissionAccount", "1234");
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.2.5.2.2 Использование метода SetConnection() в классе DataSourceConnections Процедура 1. Между двумя строками кода внутри ConfigureCrystalReports() извлеките экземпляр DataSourceConnections из свойства DataSourceConnections экземпляра NorthwindCustomers.
Dim myDataSourceConnections As DataSourceConnections = northwindCustomersReport.DataSourceConnections DataSourceConnections dataSourceConnections = northwindCustomersReport.DataSourceConnections;
2. Извлеките IConnectionInfo по индексу 0 экземпляра DataSourceConnections.
Dim myConnectInfo As IConnectionInfo = myDataSourceConnections(0) IConnectionInfo connectInfo = dataSourceConnections[0];
3. Вызовите метод SetConnection() с именем сервера, именем базы данных, именем пользователя и паролем.
В целях безопасности необходимо использовать учетную запись базы данных с ограниченными разрешениями доступа.
В создаваемом коде замените пароль "1234" (показан ниже) новым паролем.
myConnectInfo.SetConnection("ServerName", "Northwind", "limitedPermissionAccount", "1234") connectInfo.SetConnection("ServerName", "Northwind", "limitedPermissionAccount", Результаты Теперь можно собрать и запустить проект для входа в защищенную базу данных SQL Server.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.2.5.3 Использование метода SetDatabaseLogon() класса ReportDocument Контекст Между двумя строками кода внутри ConfigureCrystalReports() вызовите метод SetDatabaseLogon() экземпляра NorthwindCustomers и передайте ему один из следующих наборов параметров:
Процедура 1. Вызовите метод SetDatabaseLogon() с вашими именем пользователя и паролем.
В целях безопасности необходимо использовать учетную запись базы данных с ограниченными разрешениями доступа.
В создаваемом коде замените пароль "1234" (показан ниже) новым паролем.
northwindCustomersReport.SetDatabaseLogon("limitedPermissionAccount","1234") northwindCustomersReport.SetDatabaseLogon("limitedPermissionAccount","1234");
2. Или вызовите метод SetDatabaseLogon() с именем сервера, именем базы данных, именем пользователя и паролем.
Этот метод не изменяет сервер или базу данных. Вам доступны только сервер и база данных по умолчанию, указанные в отчете.
В создаваемом коде замените пароль "1234" (показан ниже) новым паролем.
northwindCustomersReport.SetDatabaseLogon("limitedPermissionAccount","1234", "ServerName", "Northwind") northwindCustomersReport.SetDatabaseLogon("limitedPermissionAccount","1234", "ServerName", "Northwind");
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.3 Учебное пособие: вход в защищенную базу данных SQL Server с помощью интегрированной защиты.
В этом учебном пособии описывается способ добавления кода входа в систему для отображения отчета, содержащего информацию из защищенной базы данных SQL Server.
Вступление Для входа в защищенную базу данных SQL Server используются классы из объектной модели ReportDocument.
Объект ReportDocument имеет свойство Database, которое возвращает экземпляр Database. Этот экземпляр Database содержит информацию из базы данных для отчета, включая свойство Tables, которое возвращает индексированный экземпляр класса Tables. Отдельные экземпляры Table можно извлечь из индексированного класса Tables.
Вход происходит на гранулярном уровне каждого экземпляра Table, которому необходимо дать индивидуальный доступ к защищенному серверу SQL. Это делается путем размещения сведений для входа в экземпляре ConnectionInfo, а затем, в цикле for, путем применения этого экземпляра ConnectionInfo к свойству ConnectionInfo каждого из экземпляров Table.
Свойства класса ConnectionInfo содержат следующие элементы:
ServerName DatabaseName UserID (не используется в этом учебном пособии) Password (не используется в этом учебном пособии) IntegratedSecurity Если вы хотите пройти учебное пособие, в котором используется аутентификация SQL (и соответственно, свойства UserID и Password, а не Integrated Security), см. раздел Учебное пособие: вход в защищенную базу данных SQL Server с помощью аутентификации SQL. [стр. 355].
Если установить только свойства DatabaseName и IntegratedSecurity, то вы войдете на сервер по умолчанию и в базу данных, указанные в отчете. Однако, если назначить альтернативное свойство ServerName, можно перенаправить отчет на другой сервер во время выполнения.
Начнем с создания отчета, содержащего данные из защищенной базы данных сервера SQL.
Завершить это учебное пособие можно с использованием классов объектной модели CrystalReportViewer;
однако рекомендуется объектная модель ReportDocument.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Примеры кода Данное учебное пособие содержит образцы кода на языках Visual Basic и C#, демонстрирующие готовую версию проекта. Следуя инструкциям пособия, создайте новый проект или откройте проект примера кода, чтобы начать работу с завершенной версией.
Примеры кода хранятся в папках, упорядоченных по языку и типу проекта. Ниже приведены имена папок для каждой версии примера кода.
Веб-сайт C#: CS_Web_RDObjMod_DBLogonIntegratedSecurity Windows-проект C#: CS_Win_RDObjMod_DBLogonIntegratedSecurity Веб-сайт Visual Basic: VB_Web_RDObjMod_DBLogonIntegratedSecurity Windows-проект Visual Basic: VB_Win_RDObjMod_DBLogonIntegratedSecurity Связанные сведения Выбор правильной объектной модели для проекта [стр. 32] Каталог образцов отчетов [стр. 15] 1.5.2.3.1 Создание отчета, подключенного к защищенной базе данных SQL Server при помощи интегрированной защиты Для начала создайте отчет, который черпает информацию из базы данных Northwind.
Northwind — это образец базы данных, поставляемый вместе с SQL Server.
Для подготовки к этому учебнику необходима определенная настройка.
1.5.2.3.1.1 Предварительная настройка базы данных Процедура 1. Конфигурация SQL Server:
Если установлен SQL Server (или OEM-версия, MSDE), он должен быть сконфигурирован для приема аутентификации Windows в данном учебном пособии.
Если SQL Server (или OEM-версия, MSDE) не установлен, то необходимо установить MSDE с аутентификацией Windows (по умолчанию) для работы с данным учебным пособием.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 2. База данных Northwind, поставляемая с SQL Server, должна быть установлена и готова к приему аутентификации Windows.
После настройки SQL Server и базы данных Northwind в соответствии с инструкциями, приведенными выше, все готово для создания отчета, который будет защищенным путем собирать данные из базы данных Northwind.
Данная процедура работает только с проектами, созданными из Настройка проекта [стр. 16].
Настройка проекта включает специальные ссылки на пространство имен и конфигурацию кода, необходимую для выполнения данной процедуры. Выполнение процедуры без этой конфигурации 1.5.2.3.1.2 Создание отчета с защищенными данными из базы данных Northwind Процедура 1. В Проводнике решений щелкните правой кнопкой мыши имя проекта, выделенное жирным шрифтом, укажите пункт Добавить, а затем выберите команду Добавить новый элемент.
2. В диалоговом окне Добавление нового элемента в представлении Шаблоны выберите шаблон Crystal 3. В поле Имя введите имя "NorthwindCustomers.rpt" и нажмите кнопку Открыть.
4. На панели Создание нового документа Crystal Report диалогового окна Галерея Crystal Reports выберите С помощью мастера отчетов.
5. На панели Выбор эксперта выберите элемент Стандартный. Нажмите кнопку ОК.
Откроется окно мастера создания стандартных отчетов.
6. На панели Доступные источники данных разверните папку Создать новое соединение.
7. В открывшейся подпапке разверните папку OLE DB (ADO).
Откроется окно "OLE DB (ADO)".
8. Выберите элемент Поставщик Microsoft OLE DB для SQL Server и нажмите кнопку Далее.
9. Введите имя сервера баз данных в поле Сервер.
10. Установите флажок Интегрированная защита.
11. В раскрывающемся списке База данных выберите элемент "Northwind".
12. Нажмите кнопку Завершить.
Откроется папка "OLE DB", отображая сервер баз данных и базу данных Northwind на нем.
13. Разверните узлы Northwind, dbo и Таблицы, а затем выберите таблицу Клиенты.
14. Щелкните символ > для перемещения таблицы на панель Выбранные таблицы, а затем нажмите кнопку 15. Удерживая клавишу Ctrl, щелкните элементыНазвание компании, Имя контакта и Город.
16. Нажмите значок >, чтобы переместить эти поля в панель Отображаемые поля, а затем нажмите кнопку Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 17. На панели Доступные поля в разделе Поля отчета выберите пункт Customer.City, затем щелкните символ > для перемещения этого поля на панель Группировать по, после чего нажмите кнопку Готово.
Будет создан отчет NorthwindCustomers, который будет загружен в главное окно программы Visual Studio.
Результаты Теперь можно связать отчет с элементом управления CrystalReportViewer и задать программно вход в базу данных.
В Настройка проекта [стр. 16] мы поместили элемент управления CrystalReportViewer на веб- или Windows-форму. На предыдущем этапе в проект был добавлен отчет NorthwindCustomers.
В этом разделе будет создан экземпляр отчета NorthwindCustomers и связан с элементом управления CrystalReportViewer. Затем выполняется проверка правильности отображения отчета при неустановленных текущих значениях его поля параметра.
Создать и связать экземпляр отчета можно двумя способами:
Как встроенный отчет.
Как невстроенный отчет.
Выберите одну из пошаговых процедур, приведенных ниже.
Если вы используете встроенные отчеты, выполните следующую пошаговую процедуру для создания отчета встроенного типа.
Если вы используете невстроенные отчеты, выполните вторую пошаговую процедуру для создания отчета невстроенного типа.
1.5.2.3.2.1 Создание экземпляра встроенного отчета NorthwindCustomers и связывание его с элементом управления CrystalReportViewer Процедура 1. Откройте веб-форму или форму Windows.
2. В меню Вид выберите команду Код.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 3. Добавьте новое объявление на уровне класса для класса-обертки отчета NorthwindCustomers с использованием имени переменной northwindCustomersReport. Установите для него модификатор доступа private.
Private northwindCustomersReport As NorthwindCustomers private NorthwindCustomers northwindCustomersReport;
4. Внутри метода ConfigureCrystalReports() создайте экземпляр класса обертки отчета.
Создан метод ConfigureCrystalReports() в Настройка проекта [стр. 16].
northwindCustomersReport = New NorthwindCustomers() northwindCustomersReport = new NorthwindCustomers();
5. На следующей строке под созданием экземпляра отчета свяжите свойство ReportSource элемента управления CrystalReportViewer с созданным экземпляром класса отчета (имя переменной:
northwindCustomersReport).
myCrystalReportViewer.ReportSource = northwindCustomersReport crystalReportViewer.ReportSource = northwindCustomersReport;
Результаты Все готово к сборке и запуску проекта. Ожидается, что загрузить отчет не удастся, так как код для входа в базу данных еще не создан.
1.5.2.3.2.2 Создание экземпляра невстроенного отчета NorthwindCustomers и связывание его с элементом управления CrystalReportViewer Процедура 1. Откройте веб-форму или форму Windows.
2. В меню Вид выберите команду Код.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 3. Добавьте новое объявление на уровне класса для класса-обертки отчета NorthwindCustomers с использованием имени переменной northwindCustomersReport. Установите для него модификатор доступа private.
Private northwindCustomersReport As ReportDocument private ReportDocument northwindCustomersReport;
Класс ReportDocument является элементом пространства имен CrystalDecisions.CrystalReports.Engine. Объявление "Imports" [Visual Basic] или "using" [C#] добавлено для этого пространства имен в Настройка проекта [стр. 16]. Создание экземпляра ReportDocument и загрузка отчета в пространство имен позволяют получить доступ к отчету с помощью SDK, не встраивая этот отчет.
4. В методе ConfigureCrystalReports() (созданном в разделе Настройка проекта [стр. 16]) создайте класс ReportDocument.
northwindCustomersReport = New ReportDocument() northwindCustomersReport = new ReportDocument();
5. Объявите строковую переменную, назовите ее reportPath и присвойте ей путь исполняемого модуля к месту хранения локального отчета. Этот путь определяется по-разному для веб-сайтов и для проектов Windows.
Для веб-сайта передайте имя локального файла отчета в виде строкового параметра в метод Server.MapPath(). Это определит расположение локального отчета как путь к каталогу на жестком диске во время выполнения.
Dim reportPath As String = Server.MapPath("NorthwindCustomers.rpt") string reportPath = Server.MapPath("NorthwindCustomers.rpt");
Для проекта Windows соедините свойство Application.StartupPath с обратной косой чертой и именем файла локального отчета. Это определит расположение отчета в том же каталоге, что и Во время компиляции отчет будет скопирован в каталог, который содержит исполняемый файл.
Dim reportPath As String = Application.StartupPath & "\" & string reportPath = Application.StartupPath + "\\" + "NorthwindCustomers.rpt";
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 6. Вызовите метод Load() экземпляра ReportDocument и передайте в него строковую переменную reportPath.
northwindCustomersReport.Load(reportPath) northwindCustomersReport.Load(reportPath);
7. Свяжите свойство ReportSource элемента CrystalReportViewer с экземпляром ReportDocument.
myCrystalReportViewer.ReportSource = northwindCustomersReport crystalReportViewer.ReportSource = northwindCustomersReport;
Результаты Если выбрано создание экземпляра класса встроенного отчета или невстроенного отчета посредством класса ReportDocument, используется такое же имя переменной: northwindCustomersReport. Это позволяет использовать в последующих процедурах один и тот же код.
Все готово к сборке и запуску проекта. Ожидается, что загрузить отчет не удастся, так как код для входа в базу данных еще не создан.
1.5.2.3.2.3 Тестирование загрузки отчета NorthwindCustomers Процедура 1. В меню Построение выберите команду Построение решения.
2. В случае возникновения ошибок сборки сразу исправьте их.
3. Если в проекте Windows используется невстроенный отчет, найдите скомпилированный исполняемый файл Windows в подкаталоге \bin\ [Visual Basic] или \bin\debug\ [C#] и скопируйте отчет в этот подкаталог.
Чтобы невстроенный отчет загружался исполняемым файлом Windows во время выполнения, отчет должен храниться в том же каталоге, что и исполняемый файл Windows.
4. В меню Отладка выберите команду Начать.
Отчет NorthwindCustomers не отображается, поскольку не был добавлен код входа в базу данных.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Результаты могут различаться в зависимости от используемой версии SAP Crystal Reports.
Например, если установлен выпуск SAP Crystal Reports Developer, появляется форма и запрашивается ввод сведений для входа в базу данных для этого отчета. Это новая функция SAP Crystal Reports Developer. Если установлена предыдущая версия SAP Crystal Reports, возникнет исключение. В любом случае необходимо выполнить следующую пошаговую процедуру для создания полнофункционального приложения.
5. Вернитесь в среду Visual Studio и нажмите кнопку Остановить, чтобы выйти из режима отладки.
1.5.2.3.3 Добавление кода входа для отчета Теперь все готово для добавления кода входа в класс code-behind. Начните с создания вспомогательного private-метода, SetDBLogonForReport().
1.5.2.3.3.1 Создание и кодирование метода SetDBLogonForReport() Процедура 1. Вернитесь в класс code-behind для этой веб-формы или формы Windows.
2. Внизу класса создайте новый private-метод с именем SetDBLogonForReport() и двумя параметрами, ConnectionInfo и ReportDocument.
Private Sub SetDBLogonForReport(ByVal myConnectionInfo As ConnectionInfo, ByVal myReportDocument As ReportDocument) private void SetDBLogonForReport(ConnectionInfo connectionInfo, ReportDocument reportDocument) 3. В этом методе извлеките экземпляр Tables из свойства Tables свойства Database параметра ReportDocument.
Tables представляет собой индексированный класс, содержащий экземпляры класса Table.
Dim myTables As Tables = myReportDocument.Database.Tables © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Tables tables = reportDocument.Database.Tables;
4. Создайте цикл foreach, который проходит по каждому экземпляру Table в экземпляре индексированного класса Table.
Необходимо включить полный путь пространства имен к классу Table, чтобы отличить его от класса Table в пространстве имен System.Web.UI.WebControls.
For Each myTable As CrystalDecisions.CrystalReports.Engine.Table In myTables foreach(CrystalDecisions.CrystalReports.Engine.Table table in tables) 5. В цикле foreach извлеките экземпляр TableLogonInfo из свойства LogOnInfo экземпляра Table.
Dim myTableLogonInfo As TableLogOnInfo = myTable.LogOnInfo TableLogOnInfo tableLogonInfo = table.LogOnInfo;
6. В цикле foreach задайте свойство ConnectionInfo в TableLogonInfo параметру ConnectionInfo.
myTableLogonInfo.ConnectionInfo = myConnectionInfo tableLogonInfo.ConnectionInfo = connectionInfo;
7. В цикле foreach передайте экземпляр TableLogonInfo как параметр методу ApplyLogonInfo в экземпляре myTable.ApplyLogOnInfo(myTableLogonInfo) table.ApplyLogOnInfo(tableLogonInfo);
Результаты С помощью этой пошаговой процедуры был создан метод настройки входа в базу данных. Однако необходимо изменить метод ConfigureCrystalReports() для обращения к этому методу, чтобы в отчете отображалось наличие сведений для входа в базу данных.
Для изменения метода ConfigureCrystalReports() необходимы два действия:
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Конфигурирование экземпляра ConnectionInfo.
Вызов метода SetDBLogonForReport().
1.5.2.3.3.2 Изменение метода ConfigureCrystalReports() для обращения к коду входа в базу данных Процедура 1. В методе ConfigureCrystalReports() создайте несколько разрывов строк в указанном выше коде, который связывает отчет с элементом управления CrystalReportViewer.
2. В разрывах строк объявите и инициализируйте класс ConnectionInfo.
Чтобы класс ConnectionInfo был доступен, включите выражение "Imports" [Visual Basic] или "using" [C#] вверху класса code-behind для пространства имен CrystalDecisions.Shared. (Это объявление было добавлено в разделе Настройка проекта [стр. 16].) Dim myConnectionInfo As ConnectionInfo = New ConnectionInfo() ConnectionInfo connectionInfo = new ConnectionInfo();
3. Задайте свойства DatabaseName и IntegratedSecurity экземпляра ConnectionInfo.
myConnectionInfo.DatabaseName = "Northwind" myConnectionInfo.IntegratedSecurity = True connectionInfo.DatabaseName = "Northwind";
connectionInfo.IntegratedSecurity = true;
4. Введите вызов метода SetDBLogonForReport(), передав экземпляр ConnectionInfo и отчет NorthwindCustomers.
SetDBLogonForReport(myConnectionInfo, northwindCustomersReport) SetDBLogonForReport(connectionInfo, northwindCustomersReport);
Результаты Затем следует первоначальный код, который связывает отчет с элементом управления CrystalReportViewer.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Все готово к сборке и запуску проекта. Отчет должен правильно загрузиться, так как был добавлен код для входа в базу данных.
1.5.2.3.3.3 Тестирование загрузки отчета NorthwindCustomers Процедура 1. В меню Построение выберите команду Построение решения.
2. В случае возникновения ошибок сборки сразу исправьте их.
3. В меню Отладка выберите команду Начать.
Отчет NorthwindCustomers отображается успешно.
4. Вернитесь в среду Visual Studio и нажмите кнопку Остановить, чтобы выйти из режима отладки.
Результаты В следующем разделе вы научитесь изменять расположение базы данных во время выполнения.
1.5.2.3.4 Добавление возможности изменения расположения базы данных во время выполнения В этом разделе рассказывается о том, как изменить расположение базы данных во время выполнения. Это потребует незначительных изменений экземпляра ConnectionInfo.
1.5.2.3.4.1 Изменение расположения базы данных во время выполнения Процедура 1. В методе ConfigureCrystalReports() создайте несколько разрывов строк в коде после строки, в которой объявляется и инициализируется класс ConnectionInfo.
2. В этих разрывах строк задайте свойство ServerName экземпляра ConnectionInfo.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide В написанном коде замените образец имени сервера DevDatabase (как показано ниже) именем конкретного сервера.
myConnectionInfo.ServerName = "DevDatabase" connectionInfo.ServerName = "DevDatabase";
Результаты Все готово к сборке и запуску проекта. Отчет должен перенаправиться на альтернативный сервер баз данных во время выполнения.
1.5.2.3.4.2 Тестирование возможности переключения отчета на альтернативный сервер баз данных во время выполнения Процедура 1. В меню "Построение" выберите команду Построение решения.
2. В случае возникновения ошибок сборки сразу исправьте их.
3. В меню Отладка выберите команду Начать.
Отчет NorthwindCustomers отображается успешно.
4. Вернитесь в среду Visual Studio и нажмите кнопку Остановить, чтобы выйти из режима отладки.
1.5.2.3.5 Конфигурирование с помощью метода SetConnection Контекст В этом разделе вы научитесь применять все три изменения (имя сервера, имя базы данных и настройку интегрированной защиты), используя метод SetConnection(). Для этого требуется лишь незначительное изменение экземпляра ConnectionInfo.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Процедура 1. В методе ConfigureCrystalReports() после строки, которая объявляет и инициализирует ConnectionInfo, удалите строки кода, назначающие свойства ServerName, DatabaseName и IntegratedSecurity.
2. Введите новую строку кода, в которой объявите метод SetConnection() экземпляра ConnectionInfo, передайте этому методу имя сервера, имя базы данных и настройку интегрированной защиты.
myConnectionInfo.SetConnection("DevDatabase", "Northwind", True) connectionInfo.SetConnection("DevDatabase", "Northwind", true);
Результаты Все готово к сборке и запуску проекта.
1.5.2.4 Учебное пособие: вход в защищенную базу данных SQL Server с подотчетом В этом учебном пособии вы обнаружите дополнительную сложность при входе в защищенную базу данных SQL Server: что, если отчет, который требует защищенного входа в базу данных SQL Server, содержит подотчет?
Вступление В этом учебном пособии вы узнаете, как соответствовать требованиям входа для подотчета.
Необходимо внести два изменения в проект, созданный в предыдущем учебном пособии:
Добавить подотчет к исходному отчету.
Этот подотчет обращается к таблице Orders базы данных Northwind. Таблица Orders связана с используемой таблицей Customers по внешнему ключу CustomerID в предыдущем учебном пособии.
Добавить новый метод.
Метод извлекает подотчеты из главного отчета и передает каждый подотчет во вспомогательный метод SetDBLogonForReport().
Завершить это учебное пособие можно с использованием классов объектной модели CrystalReportViewer;
однако рекомендуется объектная модель ReportDocument.
Чтобы собрать это пособие с объектной моделью CrystalReportViewer, см. раздел Учебное пособие: вход в защищенную базу данных SQL Server [стр. 247].
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Примеры кода Данное учебное пособие содержит образцы кода на языках Visual Basic и C#, демонстрирующие готовую версию проекта. Следуя инструкциям пособия, создайте новый проект или откройте проект примера кода, чтобы начать работу с завершенной версией.
Примеры кода хранятся в папках, упорядоченных по языку и типу проекта. Ниже приведены имена папок для каждой версии примера кода.
Веб-сайт C#: CS_Web_RDObjMod_DBLogonSubrpt Windows-проект C#: CS_Win_RDObjMod_DBLogonSubrpt Веб-сайт Visual Basic: VB_Web_RDObjMod_DBLogonSubrpt Windows-проект Visual Basic: VB_Win_RDObjMod_DBLogonSubrpt Связанные сведения Каталог образцов отчетов [стр. 15] 1.5.2.4.1 Добавление подотчета в исходный отчет Вы начинаете с добавления подотчета к исходному отчету.
Процедура 1. Откройте проект, созданный в предыдущем учебном пособии, Учебное пособие: вход в защищенную базу данных SQL Server с помощью интегрированной защиты. [стр. 373].
2. В Проводнике решений дважды щелкните отчет NorthwindCustomers, чтобы открыть его.
3. Щелкните правой кнопкой мыши серую панель Подробности и выберите команду Вставить раздел 4. Щелкните правой кнопкой мыши в созданном разделе Подробности b, укажите пункт Вставить и выберите команду Подотчет.
Вокруг курсора мыши появится серый квадрат.
5. Перетащите серый прямоугольник в новый раздел Подробности b.
6. В диалоговом окне Вставка подотчета на вкладке Подотчет выберите элемент Создать подотчет с помощью мастера отчетов.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Диалоговое окно "Вставка подотчета" содержит другие функции, которые позволяют выбирать существующий отчет и подотчеты по запросу. Дополнительные сведения об этих функциях см. в разделе Вкладка "Подотчет" (диалоговое окно "Вставка подотчета") [стр. 951].
7. В поле Имя нового отчета введите "CustomerOrders".
8. Щелкните элемент Мастер отчетов....
9. В диалоговом окне Мастер создания стандартных отчетов на панели Доступные источники данных разверните папку Создать новое соединение.
10. Разверните папку OLE DB (ADO).
Папка содержит сервер баз данных, сконфигурированный для отчета в момент создания отчета.
Если сервер не отображается, следуйте инструкциям из предыдущего учебника для входа в базу данных SQL Server.
11. Разверните узлы Northwind, dbo и Tables.
12. Выберите таблицу Заказы и щелкните символ >, чтобы переместить таблицу "Заказы" на панель Выбор таблиц, затем нажмите кнопку Далее.
13. На панели Доступные поля выберите элементы Идентификатор заказа, Дата заказа, Дата отгрузки и Название отгрузки.
14. Щелкните символ >, чтобы переместить эти поля в панель Поля для отображения, и нажмите кнопку Готово.
15. В диалоговом окне Вставка подотчета выберите вкладку Ссылка.
16. На панели Поля исходного отчета, с которыми необходимо установить связь, в списке Доступные поля раскройте таблицу Клиенты, выберите элемент Идентификатор клиента и щелкните символ >.
17. На появившейся панели Связь с полем Клиенты.Идентификатор клиента оставьте значения по умолчанию без изменений.
Эти параметры и данные автоматически создают связь между главным отчетом и подотчетом.
18. Нажмите кнопку ОК.
Новый подотчет, CustomerOrders, отображается в разделе "Подробности b" главного отчета.
Добавление подотчета в раздел "Подробности" означает, что подотчет отображается для каждой строки, которая добавляет затраты на выполнение в отчет. Если информация подотчета с таким уровнем структурирования не нужна, разместите подотчет в разделе "Группы" вместо раздела "Подробности".
Результаты Теперь можно проверить изменения в подотчете.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.4.1.2 Проверка настроек подотчета Процедура 1. В разделе "Подробности" отчета дважды щелкните подотчет CustomerOrders, чтобы просмотреть его.
Внизу представления "Конструктор" отображаются кнопки навигации как для основного отчета, так и для подотчета CustomerOrders.
2. Если Проводник полей не отображается, на панели инструментов Crystal Reports нажмите кнопку Переключение вида поля.
Для отображения Проводника полей также можно открыть меню Crystal Reports и выбрать пункт Проводник полей.
3. В Проводнике полей разверните элемент Поля параметров.
4. Убедитесь, что поле параметра Pm-Клиенты.Идентификатор клиента было автоматически создано при установлении связи с подотчетом.
5. На панели инструментов нажмите кнопку Мастер выбора.
6. В диалоговом окне Мастер выбора убедитесь, что установлен критерий Заказы.Идентификатор клиента равно {Pm-Клиенты.Идентификатор клиента}, и нажмите кнопку ОК.
7. В меню Файл выберите команду Сохранить все.
Результаты Подотчет CustomerOrders успешно добавлен в отчет NorthwindCustomers. В следующем разделе добавляется код для установки сведений о защищенном входе в базу данных SQL Server для всех подотчетов, обнаруженных в главном отчете.
1.5.2.4.2 Добавление кода входа в подотчет Теперь можно добавить код входа для подотчета в класс code-behind. Для начала создайте вспомогательный private-метод с именем SetDBLogonForSubreports().
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.4.2.1 Создание и кодирование метода SetDBLogonForSubreports() Процедура 1. Откройте веб-форму или форму Windows.
2. В меню Вид выберите команду Код.
3. Внизу класса создайте новый private-метод с именем SetDBLogonForSubreports() и двумя параметрами, ConnectionInfo и ReportDocument.
Private Sub SetDBLogonForSubreports(ByVal myConnectionInfo As ConnectionInfo, ByVal myReportDocument As ReportDocument) private void SetDBLogonForSubreports(ConnectionInfo connectionInfo, ReportDocument reportDocument) 4. В этом методе извлеките экземпляр Sections из свойства Sections свойства ReportDefinition параметра ReportDocument.
Sections представляет собой индексированный класс, содержащий экземпляры класса Section.
Dim mySections As Sections = myReportDocument.ReportDefinition.Sections Sections sections = reportDocument.ReportDefinition.Sections;
5. Создайте цикл foreach, который проходит по каждому экземпляру Section в экземпляре индексированного класса Sections.
For Each mySection As Section In mySections foreach(Section section in sections) 6. В каждом цикле foreach извлеките экземпляр ReportObjects из свойства ReportObjects экземпляра Sections.
Dim myReportObjects As ReportObjects = mySection.ReportObjects Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide ReportObjects reportObjects = section.ReportObjects;
7. В цикле foreach создайте новый вложенный цикл foreach, проходящий через каждый экземпляр ReportObject в экземпляре индексированного класса ReportObjects.
For Each myReportObject As ReportObject In myReportObjects foreach(ReportObject reportObject in reportObjects) 8. Во вложенном цикле foreach создайте условный блок, который проверяет, равно ли свойство Kind экземпляра ReportObject выбранному SubreportObject в перечислении ReportObjectKind.
If myReportObject.Kind = ReportObjectKind.SubreportObject Then if(reportObject.Kind == ReportObjectKind.SubreportObject) 9. В условном блоке приведите экземпляр ReportObject к экземпляру SubreportObject.
Dim mySubreportObject As SubreportObject = CType(myReportObject, SubreportObject) SubreportObject subreportObject = (SubreportObject)reportObject;
10. В том же условном блоке объявите новый экземпляр ReportDocument в виде переменной subReportDocument и заполните ее, вызвав метод OpenSubreport() экземпляра SubreportObject.
Dim subReportDocument As ReportDocument = mySubreportObject.OpenSubreport(mySubreportObject.SubreportName) ReportDocument subReportDocument = subreportObject.OpenSubreport(subreportObject.SubreportName);
11. Наконец, в условном блоке вызовите исходный метод SetDBLogonForReport() и передайте ему параметр ConnectionInfo и новую переменную subReportDocument.
SetDBLogonForReport(myConnectionInfo, subReportDocument) SetDBLogonForReport(connectionInfo, subReportDocument);
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.4.2.2 Изменение ConfigureCrystalReports() для обращения к коду входа в базу данных Контекст Эта пошаговая процедура создала метод извлечения всех возможных подотчетов в виде экземпляров ReportDocument. Каждый экземпляр подотчета ReportDocument затем передается исходному методу для задания входа в защищенную базу данных SQL Server.
Однако следует изменить метод ConfigureCrystalReports() для обращения к этому методу, чтобы подотчеты обрабатывали сведения для входа в базу данных.
Процедура 1. В методе ConfigureCrystalReports() создайте пару разрывов строк в коде над строкой, которая привязывает отчет к элементу управления CrystalReportViewer.
2. В разрывах строк введите вызов метода SetDBLogonForSubreports(), передав экземпляр ConnectionInfo и отчет NorthwindCustomers.
SetDBLogonForSubreports(myConnectionInfo, northwindCustomersReport) SetDBLogonForSubreports(connectionInfo, northwindCustomersReport);
1.5.2.4.2.3 Тестирование загрузки отчета NorthwindCustomers Контекст Затем следует первоначальный код, который связывает отчет с элементом управления CrystalReportViewer.
Все готово к сборке и запуску проекта. Ожидается, что отчет и подотчет будут успешно загружены, поскольку теперь написан код для входа любых подотчетов в базу данных.
Процедура 1. В меню Построение выберите команду Построение решения.
2. В случае возникновения ошибок сборки сразу исправьте их.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 3. В меню Отладка выберите команду Начать.
Отчет NorthwindCustomers, включая новый подотчет CustomerOrders, отображается успешно.
4. Вернитесь в среду Visual Studio и нажмите кнопку Остановить, чтобы выйти из режима отладки.
1.5.2.5 Учебное пособие: чтение и установка дискретных параметров В этом учебном пособии описывается создание отчета, к данным которого можно применять фильтры, основываясь на дискретных параметрах.
Вступление Дискретный параметр представляет собой одиночное значение, в отличие от параметра диапазона, который охватывает диапазон значений. Текстовые элементы (например, названия городов) обычно доступны через дискретные параметры. Числовые элементы (например, зарплаты сотрудников) обычно доступны через параметры диапазона.
В этом учебном пособии устанавливается значение дискретного параметра для просмотра отчета о клиентах, основанном на одном поле. Отчет отображает только тех клиентов, которые живут в городах, выбранных в списке городов. Список городов формируется из значений по умолчанию параметра "Город".
Значения по умолчанию для параметра "Город" формируются в отчете.
Для начала необходимо создать отчет о клиентах, содержащий параметр "Город". Отчет формирует данные из образца базы данных, который поставляется вместе с версией SAP Crystal Reports для разработчика Microsoft Visual Studio. Когда отчету приписываются значения в коде, создается список ArrayList, содержащий названия городов (Париж, Токио), и экземпляр этого ArrayList передается во вспомогательный метод, который устанавливает названия этих городов в качестве текущих значений параметра "Город". Затем устанавливается связь между отчетом и элементом управления CrystalReportViewer, после чего можно просматривать отчет, отображающий только тех клиентов, которые живут в Париже и Токио.
В следующей части учебного пособия будут выполнены следующие действия:
Создание метода, получающего все значения по умолчанию и возвращающего их в ArrayList.
Добавление в форму элемента управления ListBox и заполнение ее данными из ArrayList.
Добавление элемента управления Button для повторного отображения отчета в зависимости от элементов, выбранных в списке ListBox.
В заключающей части учебного пособия кодируется обработка нажатия кнопки для извлечения любых выбранных элементов из списка ListBox и установки их в качестве текущих значений параметра "Город".
Отчет повторно отображает только тех клиентов, которые живут в городах, выбранных в органе управления ListBox.
В целях данного пособия можно также использовать классы объектной модели CrystalReportViewer, хотя объектная модель ReportDocument более предпочтительна.
Чтобы собрать это пособие с объектной моделью CrystalReportViewer, см. раздел Учебное пособие: вход в защищенную базу данных SQL Server [стр. 247].
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Примеры кода Данное учебное пособие содержит образцы кода на языках Visual Basic и C#, демонстрирующие готовую версию проекта. Следуя инструкциям пособия, создайте новый проект или откройте проект примера кода, чтобы начать работу с завершенной версией.
Примеры кода хранятся в папках, упорядоченных по языку и типу проекта. Ниже приведены имена папок для каждой версии примера кода.
Веб-сайт C#: CS_Web_RDObjMod_Parameters Windows-проект C#: CS_Win_RDObjMod_Parameters Веб-сайт Visual Basic: VB_Web_RDObjMod_Parameters Windows-проект Visual Basic: VB_Win_RDObjMod_Parameters База данных Xtreme В этом учебном пособии используется пример базы данных под названием Xtreme. Файл xtreme.mdb базы данных включен в пакет примеров кода SAP Crystal Reports.NET SDK. Чтобы использовать базу данных Xtreme, необходимо вручную создать соединение ODBC с ней.
Связанные сведения Выбор правильной объектной модели для проекта [стр. 32] Каталог образцов отчетов [стр. 15] Для начала создадим отчет, который черпает информацию из базы данных Xtreme.
Процедура 1. В Проводнике решений щелкните правой кнопкой мыши имя проекта, выделенное жирным шрифтом, укажите пункт Добавить, а затем выберите команду Добавить новый элемент.
2. В диалоговом окне Добавление нового элемента в представлении Шаблоны выберите шаблон с именем Отчет Crystal.
3. В поле Имя введите имя CustomersByCity.rpt и нажмите кнопку Добавить.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 4. На панели Создание нового документа Crystal Report диалогового окна Галерея Crystal Reports выберите С помощью мастера отчетов.
5. На панели Выбор мастера выберите параметр Стандарт, затем нажмите кнопку ОК.
6. На панели Доступные источники данных окна мастера создания стандартных отчетов разверните папку Создать новое соединение.
В Visual Studio.NET 2003, где SAP Crystal Reports еще не обновлен до полной версии, папка "Создать новое подключение" еще не существует; содержимое отображается на верхнем уровне.
7. В открывшейся подпапке разверните папку ODBC (RDO).
8. В окне ODBC (RDO) выберите правильную запись ODBC DSN для базы данных Xtreme, затем нажмите кнопку Готово.
Папка ODBC (RDO) развернется и отобразит базу данных Xtreme.
9. Разверните узел Таблицы и выберите таблицу Клиент.
10. Дважды щелкните таблицу Customer, чтобы переместить ее на панель Выбранные таблицы, после чего нажмите кнопку Далее.
11. Разверните таблицу Клиент, а затем, зажав клавишу CTRL, щелкните поля Имя клиента, Титул контакта, Адрес 1, Фамилия контакта и Город.
12. Щелкните символ > для перемещения этих полей на панель Отображаемые поля, а затем нажмите кнопку Далее.
13. На панели Доступные поля в области Поля отчета выберите поле Customer.City, щелкните значок >, чтобы переместить его на панель Группировать по, после чего нажмите кнопку Готово button.
Будет создан отчет CustomersByCity, который будет загружен в главное окно программы Visual Studio.
Результаты Все готово к добавлению параметра с именем "Город" и его заполнения значениями по умолчанию.
1.5.2.5.1.2 Добавление параметра "Город" Контекст Необходимо открыть Проводник полей, поскольку он предоставляет доступ к разным функциям отчета, включая параметры.
Процедура 1. Если Проводник полей не отображается, на панели инструментов SAP Crystal Reports нажмите кнопку Переключение вида поля.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Для отображения Проводника полей также можно открыть меню Crystal Reports и выбрать пункт Проводник полей.
2. В Проводнике полей щелкните правой кнопкой мыши элемент Поля параметров и выберите пункт Создать....
3. В диалоговом окне Создание поля параметра выполните описанные ниже действия.
a) Задайте Имя для элемента Город.
b) Задайте Тип для элемента Строка. Задайте Текст подсказки для элемента Выберите один или c) Задайте Поле значения для элемента Город.
d) Выберите Действия, затем выберите Добавить все значения базы данных. При этом на среднюю панель будет добавлен список всех городов.
e) В области Параметры значений установите для элемента Текст подсказки текст Выберите один f) В той же области установите для элемента Разрешить множественные значения значение True.
g) Для элемента Разрешить дискретные значения установите значение True.
4. Нажмите кнопку ОК, чтобы закрыть диалоговое окно Создание поля параметра.
Результаты Теперь значения по умолчанию содержат большой список городов. Позже в этом учебном пособии мы обратимся к этому списку значений по умолчанию программным путем, через свойство DefaultValues класса ParameterFieldDefinition.
Теперь с помощью мастера выбора установим формулу, которая подключает столбец базы данных "Город" к только что созданному полю параметра "Город".
1.5.2.5.1.3 Подключение параметра "Город" к столбцу базы данных "Город" Процедура 1. На панели инструментов Crystal Reports щелкните элемент Мастер выбора.
2. В диалоговом окне Выбор поля в разделе Поля отчета выберите пункт Клиент.Город, а затем нажмите 3. В диалоговом окне Выбрать эксперта на вкладке Клиент.Город выберите из раскрывающегося списка значение равно.
4. В раскрывающемся списке, который появится справа, выберите первый элемент списка, {?Город}, и нажмите кнопку ОК.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Этот элемент ({?Город}) является созданным ранее параметром "Город".
5. В меню Файл выберите команду Сохранить все.
Результаты Теперь все готово для установления связи отчета с элементом управления CrystalReportViewer и для того, чтобы указать для параметра города два начальных значения: Париж и Токио.
При выполнении инструкций из раздела Настройка проекта [стр. 16] для подготовки к этому учебному пособию мы поместили элемент управления CrystalReportViewer в веб- или Windows-форму. На предыдущих шагах в проект был добавлен отчет CustomersByCity.
В этом разделе будет создан экземпляр отчета CustomersByCity и связан с элементом управления CrystalReportViewer. Затем выполняется проверка правильности отображения отчета при неустановленных текущих значениях его поля параметра.
Создать экземпляр отчета и связать его можно двумя способами:
Как встроенный отчет.
Как невстроенный отчет.
Выберите одну из пошаговых процедур, приведенных ниже.
Если вы используете встроенные отчеты, выполните следующую пошаговую процедуру для создания отчета встроенного типа.
Если вы используете невстроенные отчеты, выполните вторую пошаговую процедуру для создания отчета невстроенного типа.
1.5.2.5.2.1 Создание экземпляра встроенного отчета CustomersByCity и связывание его с элементом управления CrystalReportViewer Процедура 1. Откройте веб-форму или форму Windows.
2. В меню Вид выберите пункт Код для просмотра класса code-behind для этой веб-формы или формы © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 3. Добавьте новое объявление на уровне класса для класса-обертки отчета CustomersByCity с именем переменной customersByCityReport. Установите для него модификатор доступа private.
Private customersByCityReport As CustomersByCity private CustomersByCity customersByCityReport;
4. Внутри метода ConfigureCrystalReports() создайте экземпляр класса обертки отчета.
Создан метод ConfigureCrystalReports() в Настройка проекта [стр. 16].
customersByCityReport = New CustomersByCity() customersByCityReport = new CustomersByCity();
5. На следующей строке под созданием экземпляра отчета свяжите свойство ReportSource элемента управления CrystalReportViewer с созданным экземпляром класса отчета (имя переменной:
customersByCityReport).
myCrystalReportViewer.ReportSource = customersByCityReport crystalReportViewer.ReportSource = customersByCityReport;
Экземпляр элемента управления CrystalReportViewer доступен в коде, поскольку элемент управления был добавлен к веб-форме или форме Windows. Если IntelliSense не распознает экземпляр элемента управления CrystalReportViewer, убедитесь, что элемент управления CrystalReportViewer добавлен в виде объявления на уровне класса к данному классу code-behind.
1.5.2.5.2.2 Создание экземпляра невстроенного отчета CustomersByCity и связывание его с элементом управления CrystalReportViewer Контекст Все готово к сборке и запуску проекта. Ожидается, что загрузить отчета не удастся, так как еще не написан код для установки значения поля параметра "Город".
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Процедура 1. Откройте веб-форму или форму Windows.
2. В меню Вид выберите команду Код.
3. Добавьте новое объявление на уровне класса для класса-обертки отчета ReportDocument с именем переменной customersByCityReport. Установите для него модификатор доступа private.
Private customersByCityReport As ReportDocument private ReportDocument customersByCityReport;
Класс ReportDocument является элементом пространства имен CrystalDecisions.CrystalReports.Engine. Объявление "Imports" [Visual Basic] или "using" [C#] добавлено для этого пространства имен в Настройка проекта [стр. 16]. Создание экземпляра ReportDocument и загрузка отчета в пространство имен позволяют получить доступ к отчету с помощью SDK, не встраивая этот отчет.
4. В методе ConfigureCrystalReports() (добавленном во время одной из процедур из раздела Настройка проекта [стр. 16]) создайте экземпляр класса ReportDocument.
customersByCityReport = New ReportDocument() customersByCityReport = new ReportDocument();
5. Объявите строковую переменную с именем reportPath и назначьте для нее путь времени выполнения, ведущий к локальному отчету. Этот путь определяется по-разному для веб-сайтов и для проектов Для веб-сайта передайте имя локального файла отчета в виде строкового параметра в метод Server.MapPath(). Это определит расположение локального отчета как путь к каталогу на жестком диске во время выполнения.
Dim reportPath As String = Server.MapPath("CustomersByCity.rpt") string reportPath = Server.MapPath("CustomersByCity.rpt");
Для проекта Windows соедините свойство Application.StartupPath с обратной косой чертой и именем файла локального отчета. Это определит расположение отчета в том же каталоге, что и © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Во время компиляции отчет будет скопирован в каталог, который содержит исполняемый файл.
Dim reportPath As String = Application.StartupPath & "\" & string reportPath = Application.StartupPath + "\\" + "CustomersByCity.rpt";
6. Вызовите метод Load() экземпляра ReportDocument и передайте его в строковую переменную reportPath.
customersByCityReport.Load(reportPath) customersByCityReport.Load(reportPath);
7. В следующей строке после загрузки отчета свяжите свойство ReportSource объекта CrystalReportViewer с экземпляром ReportDocument.
myCrystalReportViewer.ReportSource = customersByCityReport crystalReportViewer.ReportSource = customersByCityReport;
Результаты Вне зависимости от того, было ли выбрано создание класса встроенных отчетов или создание невстроенного отчета при помощи класса ReportDocument, используется то же имя переменной:
customersByCityReport. Это позволяет использовать в последующих процедурах один и тот же код.
Все готово к сборке и запуску проекта. Ожидается, что загрузить отчета не удастся, так как еще не написан код для установки значения поля параметра "Город". Значение поля параметра "Город" будет добавлено в следующих разделах данного учебного пособия.
1.5.2.5.2.3 Тестирование загрузки отчета CustomersByCity Процедура 1. В меню Построение выберите команду Построение решения.
2. В случае возникновения ошибок сборки сразу исправьте их.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 3. Если в проекте Windows используется невстроенный отчет, найдите скомпилированный исполняемый файл Windows в подкаталоге \bin\ [Visual Basic] или \bin\debug\ [C#] и скопируйте отчет в этот подкаталог.
Чтобы невстроенный отчет загружался исполняемым файлом Windows во время выполнения, отчет должен храниться в том же каталоге, что и исполняемый файл Windows.
4. В меню Отладка выберите команду Начать.
Отчет CustomersByCity не отображается. Он отобразится после того, как в поле параметра "Город" будет добавлено значение, о чем рассказывается далее в этом учебном пособии.
Результаты могут различаться в зависимости от используемой версии SAP Crystal Reports. В более поздних версиях может отображаться запрос с формой для ввода значений параметров для отчета.
В более ранних версиях будет отображаться сообщение "Отсутствует текущее значение поля параметра". В любом случае необходимо добавить дальнейший код для создания полнофункционального приложения.
5. Вернитесь в среду Visual Studio и нажмите кнопку Остановить, чтобы выйти из режима отладки.
1.5.2.5.3 Ручная настройка параметров в коде Теперь все готово для того, чтобы задать два значения ("Париж" и "Токио") для отчета CustomersByCity.
Это включает в себя кодирование, которое можно разделить на два процесса.
Константа PARAMETER_FIELD_NAME нужна для удержания имени поля параметра "Город", которое используется в коде несколько раз.
Код для добавления текущих значений в параметр обычно используется в двух разных местах в этом пособии; таким образом, этот код создается как отдельный вспомогательный метод.
В методе ConfigureCrystalReports() параметры "Париж" и "Токио" добавляются в экземпляр ArrayList и передаются как в отчет, так и в экземпляр ArrayList для обработки вспомогательного В следующем разделе рассказывается о том, как получить значения по умолчанию из поля параметра и установить эти значения в элементе управления ListBox. Они используются в конце учебного пособия для динамического выбора новых городов и фильтрации отчета на основе выбранных городов.
Перейдите к разделу Создание элемента управления ListBox, отображающего параметры по умолчанию [стр. 405].
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.5.3.1 Создание константы PARAMETER_FIELD_NAME Процедура 1. Вернитесь в класс code-behind для этой веб-формы или формы Windows.
2. На уровне класса создайте новую строковую константу, PARAMETER_FIELD_NAME, и задайте ей значение "Город".
Private Const PARAMETER_FIELD_NAME As String = "City" private const string PARAMETER_FIELD_NAME = "City";
1.5.2.5.3.2 Создание вспомогательного метода, который добавляет текущие значения в параметр отчета Контекст Теперь все готово к созданию вспомогательного метода, который добавляет текущие значения в параметр отчета.
Процедура 1. Вернитесь в класс code-behind для этой веб-формы или формы Windows.
2. Над подписью класса добавьте объявление "Imports" [Visual Basic] или "using" [C#] в верхней части класса для пространства имен System.Collections (если это пространство имен еще не объявлено).
Imports System.Collections using System.Collections;
Это объявление требуется для доступа к классу ArrayList.
3. Внизу класса создайте новый private-метод с именем SetCurrentValuesForParameterField() и с двумя переменными в подписи метода: ReportDocument и ArrayList.