«Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Содержание 1 Руководство SAP Crystal Reports.NET SDK Developer Guide............................ 4 1.1 Начало ...»
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Позднее в этом учебном пособии, если используется встроенный отчет, класс встроенного отчета будет передан в параметр метода ReportDocument. Как это возможно? Все встроенные классы отчетов в SAP Crystal Reports наследуются от базового класса ReportDocument.
Private Sub SetCurrentValuesForParameterField(ByVal myReportDocument As ReportDocument, ByVal myArrayList As ArrayList) private void SetCurrentValuesForParameterField(ReportDocument reportDocument, ArrayList arrayList) 4. В этом методе объявите и инициализируйте ParameterValues – индексированный класс, как и переменная currentParameterValues.
Чтобы класс ParameterValues был доступным, необходимо включить объявление "Imports" [Visual Basic] или "using" [C#] в верхней части класса code-behind для пространства имен CrystalDecisions.Shared. (Это объявление было добавлено в разделе Настройка проекта [стр. 16].) Dim currentParameterValues As ParameterValues = New ParameterValues() ParameterValues currentParameterValues = new ParameterValues();
5. Создайте цикл foreach для извлечения всех предоставленных значений (как тип Object) из экземпляра ArrayList.
В этом методе выполняется извлечение значений из ArrayList. Позже необходимо написать код, который добавляет значения в ArrayList.
For Each submittedValue As Object In myArrayList foreach(object submittedValue in arrayList) 6. В цикле foreach объявите и инициализируйте класс ParameterDiscreteValue.
Dim myParameterDiscreteValue As ParameterDiscreteValue = New ParameterDiscreteValue() © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue();
7. В цикле foreach преобразуйте submittedValue в строку и передайте ее свойству Value экземпляра ParameterDiscreteValue.
myParameterDiscreteValue.Value = submittedValue.ToString() parameterDiscreteValue.Value = submittedValue.ToString();
8. В цикле foreach добавьте экземпляр ParameterDiscreteValue в индексированный класс currentParameterValues.
currentParameterValues.Add(myParameterDiscreteValue) currentParameterValues.Add(parameterDiscreteValue);
На этом завершается код в цикле foreach. Разместите оставшийся код (из последующих шагов) после цикла foreach.
9. За пределами цикла foreach извлеките индексированный класс ParameterFieldDefinitions, исходящий из свойства DataDefinition экземпляра ReportDocument.
Dim myParameterFieldDefinitions As ParameterFieldDefinitions = myReportDocument.DataDefinition.ParameterFields ParameterFieldDefinitions parameterFieldDefinitions = reportDocument.DataDefinition.ParameterFields;
10. Извлеките экземпляр ParameterFieldDefinition из индексированного класса ParameterFieldDefinitions, основанного на записи индекса константы PARAMETER_FIELD_NAME.
Dim myParameterFieldDefinition As ParameterFieldDefinition = myParameterFieldDefinitions(PARAMETER_FIELD_NAME) ParameterFieldDefinition parameterFieldDefinition = parameterFieldDefinitions[PARAMETER_FIELD_NAME];
11. Передайте экземпляр currentParameterValues в метод ApplyCurrentValues экземпляра ParameterFieldDefinition.
myParameterFieldDefinition.ApplyCurrentValues(currentParameterValues) parameterFieldDefinition.ApplyCurrentValues(currentParameterValues);
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.5.3.3 Вызов метод SetCurrentValuesForParameterField() перед связыванием отчета с элементом управления CrystalReportViewer Контекст Эта пошаговая процедура демонстрирует создание метода, который извлекает предоставленные значения из экземпляра ArrayList instance и помещает их как текущие значения в экземпляр ParameterFieldDefinition.
Теперь необходимо вызвать этот метод перед связыванием отчета с элементом управления CrystalReportViewer, чтобы отчет учитывал настройки параметров.
Процедура 1. В методе ConfigureCrystalReports() создайте несколько разрывов строк в указанном выше коде, который связывает отчет с элементом управления CrystalReportViewer.
В этих разрывах строк можно ввести дополнительный код, исправляющий отчет прежде, чем он будет привязан к средству просмотра.
2. В разрывах строк объявите и инициализируйте ArrayList.
Dim myArrayList As ArrayList = New ArrayList() ArrayList arrayList = new ArrayList();
3. Добавьте названия городов "Париж" и "Токио" в виде строки в экземпляр ArrayList.
myArrayList.Add("Paris") myArrayList.Add("Tokyo") arrayList.Add("Paris");
arrayList.Add("Tokyo");
4. Вызовите метод SetCurrentValuesForParameterField() и передайте экземпляры CustomersByCityReport и ArrayList.
SetCurrentValuesForParameterField(customersByCityReport, myArrayList) SetCurrentValuesForParameterField(customersByCityReport, © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.5.3.4 Тестирование загрузки отчета CustomersByCity Контекст Последняя строка кода в методе – это код, связывающий отчет с элементом управления CrystalReportViewer.
Все готово к сборке и запуску проекта. Ожидается, что отчет успешно отобразится, так как теперь написан код для задания текущих значений поля параметра.
Процедура 1. В меню Построение выберите команду Построение решения.
2. В случае возникновения ошибок сборки сразу исправьте их.
3. В меню Отладка выберите команду Начать.
Отчет CustomersByCity отображается успешно, показывая списки клиентов из Парижа и Токио.
4. Вернитесь в среду Visual Studio и нажмите кнопку Остановить, чтобы выйти из режима отладки.
1.5.2.5.4 Создание элемента управления ListBox, отображающего параметры по умолчанию Оставшаяся часть учебного пособия касается отображения полного списка значений по умолчанию для поля параметров в элементе управления ListBox, и основывается на выборе тех или иных элементов из списка ListBox, что вызывает повторную фильтрацию содержимого отчета.
В этом разделе вы научитесь заполнять элемент управления ListBox значениями поля параметров по умолчанию.
Необходимо помнить, что при создании этого отчета в начале данного учебного пособия устанавливаются значения по умолчанию – большой список городов.
Для этого необходимо добавить и настроить элемент управления ListBox, а также создать вспомогательный метод для заполнения этого элемента.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.5.4.1 Создание и настройка элемента управления ListBox в форме Процедура 1. Откройте форму Windows или веб-форму.
2. В меню Вид выберите команду Конструктор.
3. Если разрабатывается веб-сайт, выполните такие действия:
Щелкните элемент управления CrystalReportViewer, чтобы выделить его.
Нажмите на клавиатуре клавишу СТРЕЛКА ВЛЕВО, чтобы появился мигающий курсор, а затем Элемент управления CrystalReportViewer отображается на одной строке.
4. Если разрабатывается проект Windows, выполните следующие действия:
Щелкните элемент управления CrystalReportViewer, чтобы выделить его.
В окне Свойства задайте для свойства Dock значение "Bottom".
В среде Visual Studio, при выборе свойства Dock вместо списка параметров появляется рамка.
Выберите часть рамки, соответствующую значению "Bottom" (то есть нижнюю).
Измените размер формы Windows и элемента управления CrystalReportViewer, сделав этот элемент достаточно большим для отображения отчета. Оставьте место над элементом управления CrystalReportViewer для элемента управления ListBox.
В окне Свойства задайте для свойства Anchor значения "Top, Bottom, Left, Right".
Измените размер формы Windows и элемента управления CrystalReportViewer, сделав этот элемент достаточно большим для отображения отчета. Оставьте место над элементом управления CrystalReportViewer для элемента управления ListBox.
5. Из панели инструментов перетащите мышью элемент управления ListBox сверху элемента управления CrystalReportViewer.
Если в элементе ListBox отображается интеллектуальная задача (при использовании Visual Studio), нажмите Esc, чтобы закрыть ее.
6. Щелкните элемент управления ListBox, чтобы выделить его.
7. В окне Свойства выполните следующие действия:
Задайте для свойства ID или Name значение defaultParameterValuesList.
Задайте для свойства SelectionMode значение "Multiple" (в проекте Windows – "MultiExtended").
8. В меню Файл выберите команду Сохранить все.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Результаты Теперь все готово для создания вспомогательного метода, который извлекает значения по умолчанию из поля параметра.
1.5.2.5.4.2 Создание вспомогательного метода, извлекающего значения по умолчанию из поля параметра Процедура 1. Откройте форму Windows или веб-форму.
2. В меню Вид выберите команду Код.
3. Внизу класса создайте новый private-метод с именем GetDefaultValuesFromParameterField(), который возвращает экземпляр ArrayList, с передачей ReportDocument в подписи метода.
Private Function GetDefaultValuesFromParameterField(ByVal myReportDocument As ReportDocument) As ArrayList private ArrayList GetDefaultValuesFromParameterField(ReportDocument reportDocument) 4. В методе GetDefaultValuesFromParameterField() извлеките индексированный класс ParameterFieldDefinitions, исходящий из свойства DataDefinition в экземпляре ReportDocument.
Dim myParameterFieldDefinitions As ParameterFieldDefinitions = myReportDocument.DataDefinition.ParameterFields ParameterFieldDefinitions parameterFieldDefinitions = reportDocument.DataDefinition.ParameterFields;
5. Извлеките экземпляр ParameterFieldDefinition из индексированного класса ParameterFieldDefinitions, основанного на записи индекса константы PARAMETER_FIELD_NAME.
Dim myParameterFieldDefinition As ParameterFieldDefinition = myParameterFieldDefinitions(PARAMETER_FIELD_NAME) ParameterFieldDefinition parameterFieldDefinition = parameterFieldDefinitions[PARAMETER_FIELD_NAME];
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 6. Извлеките индексированный класс ParameterValues (как переменную defaultParameterValues) из свойства DefaultValues экземпляра ParameterFieldDefinition.
Dim defaultParameterValues As ParameterValues = myParameterFieldDefinition.DefaultValues ParameterValues defaultParameterValues = parameterFieldDefinition.DefaultValues;
7. Объявите и создайте экземпляр ArrayList.
Dim myArrayList As ArrayList = New ArrayList() ArrayList arrayList = new ArrayList();
8. Создайте цикл foreach для извлечения каждого экземпляра ParameterValue из defaultParameterValues.
For Each myParameterValue As ParameterValue In defaultParameterValues foreach(ParameterValue parameterValue in defaultParameterValues) В цикле foreach создайте вложенный условный блок, который проверяет наличие дискретных (в отличие от диапазона) значений параметра. Существует две версии этого условного блока, поскольку в разных версиях SAP Crystal Reports для разработчика Microsoft Visual Studio имеются изменения в интерфейсе API. Проверьте интерфейс API (используя IntelliSense), чтобы узнать, какое свойство доступно в разделе ParameterValue.
9. Если доступно свойство IsRange, то в цикле foreach введите такой код:
If (Not myParameterValue.IsRange) Then if(!parameterValue.IsRange) 10. Или, если доступно свойство Kind (DiscreteOrRangeKind, перечисление с тремя значениями:
DiscreteValue, RangeValue, DiscreteAndRangeValue), то в цикле foreach взамен введите следующий код:
If (myParameterValue.Kind = DiscreteOrRangeKind.DiscreteValue) Then if(parameterValue.Kind == DiscreteOrRangeKind.DiscreteValue) © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 11. Во вложенном условном блоке, приведите экземпляр ParameterValue к его расширенному классу, DiscreteParameterValue.
Dim myParameterDiscreteValue As ParameterDiscreteValue = CType(myParameterValue, ParameterDiscreteValue) ParameterDiscreteValue parameterDiscreteValue = (ParameterDiscreteValue)parameterValue;
12. Также во вложенном условном блоке добавьте свойство Value экземпляра ParameterDiscreteValue (преобразованное в тип String) в экземпляр ArrayList.
myArrayList.Add(myParameterDiscreteValue.Value.ToString()) arrayList.Add(parameterDiscreteValue.Value.ToString());
13. За пределами условного блока и цикла foreach, в конце метода, возвратите экземпляр ArrayList из метода.
Return myArrayList return arrayList;
1.5.2.5.4.3 Установка связи между ArrayList, возвращаемым из метода, и ListBox в веб-проекте Контекст Мы извлекли значения по умолчанию из поля параметра и вернули их из метода как ArrayList. Теперь мы свяжем ArrayList с элементом управления ListBox с именем defaultParameterValuesList.
Код немного отличается в зависимости от того, используется ли веб-проект или проект Windows, поэтому необходимо выполнить процедуру либо только для веб-проекта, либо только для проекта Windows.
Процедура 1. В методе ConfigureCrystalReports() создайте несколько разрывов строк в коде сразу после строки кода, которая добавляет строковое значение Tokyo к экземпляру ArrayList.
В этих разрывах строк можно ввести дополнительный код, который задает источник данных для элемента управления ListBox с именем defaultParameterValuesList при первой загрузке страницы.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 2. В разрывах строк создайте условный блок Not IsPostBack.
If Not IsPostBack Then if(!IsPostBack) Условный блок Not IsPostBack используется для инкапсуляции кода, который необходимо запускать только при первой загрузке страницы. Элементы управления обычно ограничены значениями данных в условных блоках Not IsPostBack, чтобы их значения данных (и любые последующие события элементов управления) не сбрасывались при перезагрузке страницы.
3. В условном блоке Not IsPostBack задайте для свойства DataSource элемента ListBox с именем defaultParameterValuesList вспомогательный метод GetDefaultValuesFromParameterField(), передав экземпляр отчета CustomersByCity как параметр метода.
defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(customersByCityReport) defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(customersByCityReport);
4. Находясь в условном блоке Not IsPostBack, вызовите метод DataBind() элемента ListBox с именем defaultParameterValuesList.
defaultParameterValuesList.DataBind() defaultParameterValuesList.DataBind();
1.5.2.5.4.4 Установка связи между ArrayList, возвращаемым из метода, и ListBox в проекте Windows Процедура 1. В методе ConfigureCrystalReports() создайте несколько разрывов строк в коде сразу после строки кода, которая добавляет строковое значение Tokyo к экземпляру ArrayList.
В этих разрывах строк можно ввести дополнительный код, который задает источник данных для элемента управления ListBox с именем defaultParameterValuesList при первой загрузке страницы.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 2. В разрывах строк, задайте для свойства DataSource элемента ListBox с именем defaultParameterValuesList вспомогательный метод GetDefaultValuesFromParameterField(), передав экземпляр отчета CustomersByCity как параметр метода.
defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(customersByCityReport) defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(customersByCityReport);
1.5.2.5.4.5 Тестирования заполнения элемента управления defaultParameterValuesList ListBox Контекст Теперь можно собрать и запустить проект, и проверить, заполняется ли элемент управления ListBox с именем defaultParameterValuesList Процедура 1. В меню Построение выберите команду Построение решения.
2. В случае возникновения ошибок сборки сразу исправьте их.
3. В меню Отладка выберите команду Начать.
Элемент управления ListBox с именем defaultParameterValuesList отображает полный список значений (в данном пособии это города).
4. Вернитесь в среду Visual Studio и нажмите кнопку Остановить, чтобы выйти из режима отладки.
Результаты В следующем разделе будет добавлена кнопка для повторного отображения отчета на основе выбора в списке ListBox с именем defaultParameterValuesList.
1.5.2.5.5 Установка параметров из выбранных элементов ListBox В этом разделе будет добавлена кнопка для изменения отображения отчета в зависимости от выбранных элементов в списке ListBox с именем defaultParameterValuesList.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide В методе обработки события для данной кнопки вызывается тот же метод, что и при первой загрузке страницы: SetCurrentValuesForParameterField(). Но на этот раз, вместо того, чтобы передавать произвольные значения (Париж и Токио), будут передаваться выбранные значения из списка ListBox с именем defaultParameterValuesList.
1.5.2.5.5.1 Создание и настройка элемента Button с именем redisplay на форме Процедура 1. Откройте форму Windows или веб-форму.
2. В меню Вид выберите команду Конструктор.
3. Из панели инструментов перетащите мышью элемент управления Button в правую часть элемента управления ListBox.
4. Щелкните элемент управления Button, чтобы выбрать его.
5. В окне Свойства выполните следующие действия:
Задайте для свойства ID или Name значение "redisplay".
установите для свойства Text значение "Отобразить отчет повторно".
Результаты Теперь все готово для создания метода обработки события нажатия кнопки, который проверяет выбранные элементы в элементе управления ListBox и передает их в метод SetCurrentValuesForParameterField().
Код немного отличается для веб-проектов и проектов Windows, поэтому выполните либо только вебпроцедуру, либо только процедуру Windows из описанных ниже.
1.5.2.5.5.2 Создание метода обработки события click для элемента Button с именем redisplay в веб-проекте Процедура 1. Дважды щелкните элемент управления Button с именем redisplay.
Происходит переход к классу code-behind, где метод обработки событий redisplay_Click() сгенерирован автоматически.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 2. Над подписью класса добавьте объявление "Imports" [Visual Basic] или "using" [C#] в верхней части класса для пространства имен System.Web.UI.WebControls (если это пространство имен еще не объявлено).
Imports System.Web.UI.WebControls using System.Web.UI.WebControls;
Это объявление требуется для доступа к классу ListItem.
3. В методе обработки события redisplay_Click(), который только что был автоматически создан, объявите и инициализируйте ArrayList.
Dim myArrayList As ArrayList = New ArrayList() ArrayList arrayList = new ArrayList();
4. Создайте цикл foreach для извлечения каждого экземпляра ListItem из свойства Items элемента defaultParameterValuesList.
For Each item As ListItem In defaultParameterValuesList.Items foreach(ListItem item in defaultParameterValuesList.Items) 5. В цикле foreach создайте вложенный условный блок, добавляющий экземпляр Item к экземпляру Arraylist, если свойство Selected текущего экземпляра Item имеет значение True.
If item.Selected Then myArrayList.Add(item.Value) if(item.Selected) arrayList.Add(item.Value);
6. За пределами условного блока и цикла foreach объявите метод SetCurrentValuesForParameterField() и передайте ему экземпляр отчета CustomersByCity и экземпляр ArrayList.
SetCurrentValuesForParameterField(customersByCityReport, myArrayList) Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide SetCurrentValuesForParameterField(customersByCityReport, arrayList);
Теперь, когда выделенные значения из списка ListBox были применены как текущие значения для поля параметров, можно приступить к повторному отображению отчета.
7. Заново свяжите экземпляр отчета CustomersByCity со свойством ReportSource элемента управления CrystalReportViewer.
myCrystalReportViewer.ReportSource = customersByCityReport crystalReportViewer.ReportSource = customersByCityReport;
1.5.2.5.5.3 Создание метода обработки события click для элемента Button с именем redisplay в проекте Windows Процедура 1. Дважды щелкните элемент управления Button с именем redisplay.
Происходит переход к классу code-behind, где метод обработки событий redisplay_Click() сгенерирован автоматически.
2. В методе обработки события redisplay_Click(), который только что был автоматически создан, объявите и инициализируйте ArrayList.
Dim myArrayList As ArrayList = New ArrayList() ArrayList arrayList = new ArrayList();
3. Создайте цикл foreach для извлечения каждого элемента (как строки) из свойства SelectedItems элемента defaultParameterValuesList.
For Each item As String In defaultParameterValuesList.SelectedItems foreach(string item in defaultParameterValuesList.SelectedItems) 4. В условном блоке добавьте элемент String к экземпляру Arraylist.
myArrayList.Add(item) arrayList.Add(item);
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 5. За пределами условного блока и цикла foreach объявите метод SetCurrentValuesForParameterField() и передайте ему экземпляр отчета CustomersByCity и экземпляр ArrayList.
SetCurrentValuesForParameterField(customersByCityReport, myArrayList) SetCurrentValuesForParameterField(customersByCityReport, arrayList);
Теперь, когда выделенные значения из органа управления ListBox могут быть применены как текущие значения для поля параметров, можно приступить к повторному отображению отчета.
6. Заново свяжите экземпляр отчета CustomersByCity со свойством ReportSource элемента управления CrystalReportViewer.
myCrystalReportViewer.ReportSource = customersByCityReport crystalReportViewer.ReportSource = customersByCityReport;
1.5.2.5.5.4 Тестирования заполнения элемента управления defaultParameterValuesList ListBox Контекст Теперь все готово для сборки и запуска проекта с целью проверки успешного сброса поля параметра.
Процедура 1. В меню Построение выберите команду Построение решения.
2. В случае возникновения ошибок сборки сразу исправьте их.
3. В меню Отладка выберите команду Начать.
4. В элементе управления ListBox, удерживая клавишу CTRL, выберите как минимум четыре разных города из списка.
5. Нажмите кнопку Повторно отображать отчет.
Страница перезагрузится и отобразятся записи о клиентах, которые живут в городах, выбранных в 6. Вернитесь в среду Visual Studio и нажмите кнопку Остановить, чтобы выйти из режима отладки.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Результаты Если вы работаете с приложением Windows, то на этом всё. Если вы работаете с веб-сайтом, перейдите к разделу Настройка сохранения параметров [стр. 416].
1.5.2.5.6 Настройка сохранения параметров В этом разделе настраивается сохранение (в учебном веб-пособии) для элементов поля параметра, выбранных в элементе управления ListBox.
Как указано в учебнике Учебное пособие: сохранение объектной модели ReportDocument с использованием Session [стр. 343], изменения в объектной модели ReportDocument теряются при перезагрузке вебстраницы, при каждом нажатии пользователей на кнопки панели инструментов CrystalReportViewer (например, "Следующая страница" или "Масштаб").
1.5.2.5.6.1 Демонстрация отсутствия сохранения выбранных параметров Процедура 1. В меню Построение выберите команду Построение решения.
2. В случае возникновения ошибок сборки сразу исправьте их.
3. В меню Отладка выберите команду Начать.
4. В элементе управления ListBox, удерживая нажатой клавишу SHIFT, выберите все города в списке.
5. Нажмите кнопку Повторно отображать отчет.
Страница перезагрузится и отобразит записи обо всех клиентах во всех городах. Это будет большой отчет, содержащий много страниц.
6. На панели инструментов CrystalReportViewer нажмите кнопку Следующая страница.
Список выбранных городов не сохраняется. Страница 2 отчета не отображается. Вместо этого снова отображаются настройки параметров (Париж и Токио).
7. Вернитесь в среду Visual Studio и нажмите кнопку Остановить, чтобы выйти из режима отладки.
Результаты Чтобы сохранять изменения, внесенные в объектную модель ReportDocument, после перезагрузки вебстраницы, необходимо добавить в приложение код для их сохранения.
Для начала добавьте код сохранения в метод ConfigureCrystalReports(), добавив блок Else к условному блоку Not IsPostBack. Затем задайте уникальные значения для экземпляра ArrayList для любого условия в условном блоке. После запуска страницы задайте значения по умолчанию ("Париж" и © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide "Токио") в экземпляре ArrayList. После перезагрузки страницы будет извлечен экземпляр, хранящийся в переменной Session.
1.5.2.5.6.2 Добавление кода сохранения к методу ConfigureCrystalReports() Процедура 1. В методе ConfigureCrystalReports() вырежьте две строки кода, которые добавляют Париж и Токио в список ArrayList, и вставьте их внизу условного блока If Not IsPostBack.
После окончания условный блок должен выглядеть так:
If Not IsPostBack Then defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(customersByCityReport) defaultParameterValuesList.DataBind() myArrayList.Add("Paris") myArrayList.Add("Tokyo") if (!IsPostBack) defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(customersByCityReport);
defaultParameterValuesList.DataBind();
arrayList.Add("Paris");
arrayList.Add("Tokyo");
2. Добавьте последнюю строку кода в условный блок, которая назначит экземпляр ArrayList переменной Session.
Имя переменной можно использовать в качестве идентификатора строки для добавляемого сеанса.
Session("myArrayList") = myArrayList Session["arrayList"] = arrayList;
3. Добавьте условие Else в условный блок Not IsPostBack.
4. В блоке Else извлеките экземпляр ArrayList из Session и приведите его к объекту ArrayList.
myArrayList = Ctype(Session("myArrayList"), ArrayList) arrayList = (ArrayList)Session["arrayList"];
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Результаты После окончания условный блок должен выглядеть так:
Эти изменения метода ConfigureCrystalReports() гарантируют, что текущий экземпляр ArrayList также доступен для передачи в метод SetCurrentValuesForParameterField().
В следующем разделе будут сделаны два изменения кода обработки события click для кнопки:
Выберите созданный ArrayList и назначьте его переменной Session.
Замените две последние строки кода (которые настраивают и отображают отчет) вызовом метода ConfigureCrystalReports(), чтобы эта функция выполнялась в обычном наборе кода.
1.5.2.5.6.3 Изменение кода в методе обработки нажатия кнопки для работы с сохранением сеанса Процедура 1. Удалите следующие две последние строки кода из метода обработки события click для кнопки.
Первая удаляемая строка кода — это вызов метода SetCurrentValuesForParameterField(). Вторая удаляемая строка — код, который связывает экземпляр customersByCityReport со свойством ReportSource элемента управления CrystalReportViewer.
В следующем действии добавьте две новые строки кода, чтобы заменить удаленный код.
2. В методе обработки события click для кнопки сразу за пределами цикла foreach добавьте строку кода, которая назначает экземпляр ArrayList переменной Session.
Имя переменной можно использовать в качестве идентификатора строки для добавляемого сеанса.
Session("myArrayList") = myArrayList Session["arrayList"] = arrayList;
3. Вызовите метод ConfigureCrystalReports().
В результате будет получен экземпляр ArrayList, применен к отчету, и будет установлена связь отчета с элементом управления CrystalReportViewer.
ConfigureCrystalReports() ConfigureCrystalReports();
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Результаты Теперь все готово для сборки и запуска проекта с целью проверки успешного сброса поля параметра.
Альтернативный подход к сохранению — сохранять экземпляр ReportDocument. Чтобы научиться сохранять экземпляр ReportDocument в переменной Session, см. учебное пособие Учебное пособие:
сохранение объектной модели ReportDocument с использованием Session [стр. 343].
1.5.2.5.6.4 Тестирования заполнения элемента управления defaultParameterValuesList ListBox Процедура 1. В меню Построение выберите команду Построение решения.
2. В случае возникновения ошибок сборки сразу исправьте их.
3. В меню Отладка выберите команду Начать.
4. В элементе управления ListBox, удерживая нажатой клавишу SHIFT, выберите все города в списке.
5. Нажмите кнопку Повторно отображать отчет.
Страница перезагрузится и отобразит записи обо всех клиентах во всех городах. Это будет большой отчет, содержащий много страниц.
6. На панели инструментов CrystalReportViewer нажмите кнопку Следующая страница.
7. Теперь список выбранных городов будет сохранен. Страница 2 отчета отображается.
8. Вернитесь в среду Visual Studio и нажмите кнопку Остановить, чтобы выйти из режима отладки.
1.5.2.5.7 Приложение: Улучшения кода дискретных параметров Мы успешно создали отчет со значением дискретного параметра и вспомогательным методом, который может принять любой набор значений в обычном формате (ArrayList), а затем применить эти значения к отчету на основе имени того или иного поля параметра (константа PARAMETER_FIELD_NAME).
При наличии Visual Studio 2005 или более поздней версии или SAP Crystal Reports Developer у вас есть доступ к расширенному интерфейсу API, который задает дискретные параметры в отчете Crystal.
Интерфейс SAP Crystal Reports Developer API помогает минимизировать объем кода, необходимый для задания дискретных параметров.
В предыдущих процедурах вы научились создавать вспомогательный метод SetCurrentValuesForParameterField().
В этом учебном пособии можно удалить вспомогательный метод и вместо этого вызвать метод SetParameterValue() класса ReportDocument.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Метод SetParameterValue() используется в следующих перегруженных методах:
SetParameterValue(int index, object value) SetParameterValue(string parameterFieldName, object value) SetParameterValue(string parameterFieldName, object value, string subreport) Можно передать любой тип объекта, в котором значение удовлетворяет значениям по умолчанию для поля параметров. Объект может быть экземпляром Array, который хранит список значений параметров.
Предварительные условия:
Необходимо создать проект, следуя инструкциям в разделе Учебное пособие: чтение и установка дискретных параметров [стр. 392].
Однако в Ручная настройка параметров в коде [стр. 400] необходимо только создать константу PARAMETER_FIELD_NAME. Вспомогательный метод SetCurrentValuesForParameterField() создавать не Если у вас уже есть проект, основанный на инструкциях из раздела Учебное пособие: чтение и установка дискретных параметров [стр. 392], удалите вспомогательный метод SetCurrentValuesForParameterField() и вызов из метода ConfigureCrystalReports().
1.5.2.5.7.1 Использование метода SetParameterValue() для дискретных параметров Процедура 1. Откройте завершенный проект, как описано в данном пособии.
2. Откройте веб-форму или форму Windows.
3. В меню Вид выберите команду Код.
4. В методе ConfigureCrystalReports() над строкой, которая связывает отчет со свойством ReportSource элемента управления CrystalReportViewer, вызовите метод SetParameterValue() из класса CustomerByCity. Передайте в метод имя поля параметра и значения параметров в экземпляре Array.
customersByCityReport.SetParameterValue(PARAMETER_FIELD_NAME, arrayList.ToArray()) customersByCityReport.SetParameterValue(PARAMETER_FIELD_NAME, arrayList.ToArray());
Результаты Теперь можно собрать и запустить проект для чтения и установки дискретных параметров.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.6 Учебное пособие: чтение и установка параметров для подотчета В этом учебном пособии рассматривается дополнительная сложность: что, если отчет, требующий параметров, содержит подотчет, требующий других параметров?
Для выполнения этого учебного пособия необходимо выполнить предыдущее пособие, Учебное пособие: чтение и установка дискретных параметров [стр. 392].
Вступление В предыдущем учебном пособии, Учебное пособие: чтение и установка дискретных параметров [стр. 392], рассказывалось о том, как создать отчет с параметром и как написать код для задания этого параметра во время выполнения – как с жестко запрограммированными значениями параметров, так и со значениями параметров, которые передаются из элемента управления ListBox.
В этом учебном пособии вы научитесь добавлять параметры к подотчету.
Потребуется внести четыре изменения в проект, созданный в разделе Учебное пособие: чтение и установка дискретных параметров [стр. 392]:
Добавить подотчет к исходному отчету.
Этот подотчет обращается к таблице "Заказы" базы данных Xtreme. Таблица "Заказы" связана с таблицей "Клиенты", которая используется в предыдущем учебном пособии, внешним ключом "Идентификатор клиента".
Параметры диапазона добавляются в подотчет, который выполняет фильтрацию по диапазону дат В форму добавляются два элемента управления Text: orderStartDate и orderEndDate, для задания диапазона дат заказов во время выполнения.
Добавить новый метод.
Этот метод создает экземпляр ParameterRangeValue, содержащий значения startDate и endDate, и затем передает этот экземпляр ParameterRangeValue в параметр диапазона внутри подотчета.
После окончания этого учебного пособия можно выполнять фильтрацию значений, которые отображаются в отчете во время выполнения. Добавленный код ограничивает количество городов, которые отображаются в главном отчете, и ограничивает диапазон дат заказов для отображения в подотчете.
В целях данного пособия можно также использовать классы объектной модели CrystalReportViewer, хотя объектная модель ReportDocument более предпочтительна.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Примеры кода Данное учебное пособие содержит образцы кода на языках Visual Basic и C#, демонстрирующие готовую версию проекта. Следуя инструкциям пособия, создайте новый проект или откройте проект примера кода, чтобы начать работу с завершенной версией.
Примеры кода хранятся в папках, упорядоченных по языку и типу проекта. Ниже приведены имена папок для каждой версии примера кода.
Веб-сайт C# : CS_Web_RDObjMod_ParametersSubrpt Windows-проект C#: CS_Win_RDObjMod_ParametersSubrpt Веб-сайт Visual Basic: VB_Web_RDObjMod_ParametersSubrpt Windows-проект Visual Basic: VB_Win_RDObjMod_ParametersSubrpt База данных Xtreme В этом учебном пособии используется пример базы данных под названием Xtreme. Файл xtreme.mdb базы данных включен в пакет примеров кода SAP Crystal Reports.NET SDK. Чтобы использовать базу данных Xtreme, необходимо вручную создать соединение ODBC с ней.
Связанные сведения Выбор правильной объектной модели для проекта [стр. 32] Учебное пособие: чтение и установка параметров диапазона для подотчета [стр. 280] В этом учебном пособии рассматривается дополнительная сложность: что, если отчет содержит подотчет, требующий других параметров?
Каталог образцов отчетов [стр. 15] 1.5.2.6.1 Добавление подотчета в исходный отчет Для начала необходимо добавить подотчет в исходный отчет.
Процедура 1. Откройте проект, созданный в предыдущем учебном пособии, Учебное пособие: чтение и установка дискретных параметров [стр. 392].
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 2. В Проводнике решений дважды щелкните отчет CustomersByCity, чтобы открыть его.
3. Щелкните правой кнопкой мыши серую панель Подробности и выберите команду Вставить раздел 4. Щелкните правой кнопкой мыши в созданном разделе Подробности b, укажите пункт Вставить и выберите команду Подотчет.
Вокруг курсора мыши появится серый квадрат.
5. Перетащите серый прямоугольник в новый раздел Подробности b.
6. В диалоговом окне Вставка подотчета на вкладке Подотчет выберите элемент Создать подотчет с помощью мастера отчетов.
Диалоговое окно "Вставка подотчета" содержит другие функции, которые позволяют выбирать существующий отчет и подотчеты по запросу. Дополнительные сведения об этих функциях см. в разделе Вкладка "Подотчет" (диалоговое окно "Вставка подотчета") [стр. 951].
7. В поле Имя нового отчета введите CustomerOrders.
8. Щелкните элемент Мастер отчетов....
9. На панели Доступные источники данных окна мастера создания стандартных отчетов разверните папку Создать новое соединение.
10. В открывшейся подпапке разверните папку ODBC (RDO).
Папка содержит сервер баз данных, сконфигурированный для отчета в момент создания отчета.
Если сервер не отображается, следуйте инструкциям из предыдущего руководства для подключения к базе данных Xtreme.
11. Выберите таблицу Заказы и щелкните символ >, чтобы переместить таблицу "Заказы" на панель Выбор таблиц, затем нажмите кнопку Далее.
12. На панели Доступные поля выберите элементы Идентификатор заказа, Дата заказа, Дата отгрузки и Отгрузка из.
13. Щелкните символ >, чтобы переместить эти поля в панель Поля для отображения, и нажмите кнопку Готово.
14. В диалоговом окне Вставка подотчета выберите вкладку Ссылка.
15. На панели Поля исходного отчета, с которыми необходимо установить связь, в списке Доступные поля раскройте таблицу Клиенты, выберите элемент Идентификатор клиента и щелкните символ >.
16. На панели Связь поля Клиенты.Идентификатор клиента, которая отобразится, оставьте настройки, установленные по умолчанию.
Эти параметры и данные автоматически создают связь между главным отчетом и подотчетом.
17. Нажмите кнопку ОК.
Новый подотчет, CustomerOrders, отображается в разделе "Подробности b" главного отчета.
При добавлении подотчета в раздел "Подробности" подотчет отображается для каждой строки, которая добавляет затраты на выполнение в отчет. Если информация подотчета с таким уровнем Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide структурирования не нужна, разместите подотчет в разделе "Группы" вместо раздела "Подробности".
Результаты Теперь можно проверить изменения в подотчете.
1.5.2.6.1.2 Проверка настроек подотчета Процедура 1. В разделе отчета "Подробности" дважды щелкните подотчет CustomerOrders, чтобы открыть его.
Внизу представления "Конструктор" отображаются кнопки навигации как для основного отчета, так и для подотчета CustomerOrders.
2. Если Проводник полей не отображается, на панели инструментов Crystal Reports нажмите кнопку Переключение вида поля.
Для отображения Проводника полей также можно открыть меню Crystal Reports и выбрать пункт Проводник полей.
3. В Проводнике полей разверните элемент Поля параметров.
4. Убедитесь, что поле параметра Pm-Клиенты.Идентификатор клиента было автоматически создано при установлении связи с подотчетом.
5. На панели инструментов нажмите кнопку Мастер выбора.
6. В диалоговом окне Мастер выбора убедитесь, что установлен критерий Заказы.Идентификатор клиента равно {Pm-Клиенты.Идентификатор клиента}, и нажмите кнопку ОК.
7. В меню Файл выберите команду Сохранить все.
Результаты Подотчет CustomerOrders успешно добавлен в отчет CustomersByCity. В следующем разделе мы добавим в подотчет параметр OrderDateRange.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.6.1.3 Добавление параметра OrderDateRange в подотчет Процедура 1. В Проводнике полей щелкните правой кнопкой мыши элемент Поля параметров и выберите команду Создать....
2. В диалоговом окне "Создание поля параметра" выполните следующие действия:
Для элемента Имя задайте значение OrderDateRange.
Для элемента Тип значения задайте значение Дата.
Для элемента Текст подсказки задайте значение Укажите диапазон дат заказов для отображения.
Для элемента Параметры задайте только одно значение диапазона.
3. Нажмите кнопку ОК.
4. На панели инструментов нажмите кнопку Мастер выбора.
5. Перейдите на вкладку Создать.
6. В диалоговом окне Выбор поля разверните таблицу Заказы, выберите элемент Дата заказа и нажмите 7. На новой вкладке Orders.OrderDate, из выпадающего списка критериев, выберите формула:.
8. Введите следующую формулу: {Заказы.Дата заказа} в {?OrderDateRange}.
9. Нажмите кнопку ОК.
10. В меню Файл выберите команду Сохранить все.
Результаты Параметр OrderDateRange успешно добавлен в подотчет и связан со столбцом Заказы.Дата заказа. В следующем разделе будет добавлен код для обращения к параметру OrderDateRange в подотчете.
1.5.2.6.2 Добавление кода параметра подотчета Теперь все готово для добавления кода параметра для подотчета в класс code-behind. Для начала создайте вспомогательный private-метод SetDateRangeForOrders().
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.6.2.1 Создание и кодирование метода SetDateRangeForOrders() Процедура 1. Откройте веб-форму или форму Windows.
2. В меню Вид выберите команду Код.
3. В верхней части класса добавьте две новых константы под существующей константой PARAMETER_FIELD_NAME, добавленной в предыдущем учебном пособии.
Private Const SUBREPORT_PARAMETER_FIELD_NAME As String = "OrderDateRange" Private Const SUBREPORT_NAME As String = "CustomerOrders" private const string SUBREPORT_PARAMETER_FIELD_NAME = "OrderDateRange";
private const string SUBREPORT_NAME = "CustomerOrders";
4. Внизу класса создайте новый private-метод с именем SetDateRangeForOrders() и тремя параметрами: ReportDocument, строкой startDate и строкой endDate.
Private Sub SetDateRangeForOrders(ByVal myReportDocument As ReportDocument, ByVal startDate As String, ByVal endDate As String) private void SetDateRangeForOrders(ReportDocument reportDocument, string startDate, string endDate) 5. В этом методе объявите и инициализируйте класс ParameterRangeValue.
Dim myParameterRangeValue As ParameterRangeValue = New ParameterRangeValue() ParameterRangeValue parameterRangeValue = new ParameterRangeValue();
Чтобы класс ParameterRangeValue был доступен, необходимо включить выражение "Imports" [Visual Basic] или "using" [C#] в верхней части класса code-behind для пространства имен CrystalDecisions.Shared. (Это объявление было добавлено в разделе Настройка проекта [стр. 16].) 6. Задайте для свойства StartValue экземпляра ParameterRangeValue параметр метода startDate myParameterRangeValue.StartValue = startDate © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide parameterRangeValue.StartValue = startDate;
Свойства StartValue и EndValue класса ParameterRangeValue принимают значения типа Object. Этот общий тип позволяет передаваемому значению диапазона принадлежать к разным типам, включая такие, как текст, номер, дата, валюта или время.
7. Задайте для свойства EndValue экземпляра ParameterRangeValue параметр метода endDate.
myParameterRangeValue.EndValue = endDate parameterRangeValue.EndValue = endDate;
8. Установите нижнюю и верхнюю границы так, чтобы они включали крайние значения.
myParameterRangeValue.LowerBoundType = RangeBoundType.BoundInclusive myParameterRangeValue.UpperBoundType = RangeBoundType.BoundInclusive parameterRangeValue.LowerBoundType = RangeBoundType.BoundInclusive;
parameterRangeValue.UpperBoundType = RangeBoundType.BoundInclusive;
Для BoundInclusive верхние и нижние значения диапазона включаются в диапазон.
Теперь можно назначить экземпляр ParameterRangeValue параметру подотчета.
9. Извлеките объект ParameterFieldDefinitions, который исходит из свойства DataDefinition экземпляра ReportDocument.
ParameterFieldDefinitions представляет собой индексированный класс, который содержит экземпляры класса ParameterFieldDefinition.
Dim myParameterFieldDefinitions As ParameterFieldDefinitions = myReportDocument.DataDefinition.ParameterFields ParameterFieldDefinitions parameterFieldDefinitions = reportDocument.DataDefinition.ParameterFields;
10. Извлеките экземпляр ParameterFieldDefinition из индексированного класса ParameterFieldDefinitions, основанного на двух индексированных значениях: имени поля параметра подотчета и имени подотчета. Передайте два значения констант, определенных вверху Dim myParameterFieldDefinition As ParameterFieldDefinition = Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide myParameterFieldDefinitions(SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME) ParameterFieldDefinition parameterFieldDefinition = parameterFieldDefinitions[SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME];
11. Вызовите метод Clear() свойства CurrentValues экземпляра ParameterFieldDefinition, чтобы удалить любые существующие значения из свойства CurrentValues.
myParameterFieldDefinition.CurrentValues.Clear() parameterFieldDefinition.CurrentValues.Clear();
12. Добавьте созданный ранее экземпляр ParameterRangeValue к свойству CurrentValues экземпляра ParameterField.
myParameterFieldDefinition.CurrentValues.Add(myParameterRangeValue) parameterFieldDefinition.CurrentValues.Add(parameterRangeValue);
13. Вызовите метод ApplyCurrentValues(), передав в него свойство CurrentValues экземпляра ParameterFieldDefinition.
myParameterFieldDefinition.ApplyCurrentValues(myParameterFieldDefinition.CurrentV parameterFieldDefinition.ApplyCurrentValues(parameterFieldDefinition.CurrentValue Результаты Эта пошаговая процедура задала начальные и конечные значения экземпляра ParameterRangeValue и передала эти значения параметру OrderDateRange в подотчете CustomerOrders.
1.5.2.6.3 Добавление элемента управления TextBox для хранения значений параметров диапазона В этом разделе будут добавлены два элемента управления TextBox для обеспечения значений даты начала и даты конца во время выполнения для параметра диапазона OrderDateRange в подотчете CustomerOrders.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Если выполнить это учебное пособие на веб-сайте, то сохранение значений даты, введенных пользователями в текстовые поля, осуществляет ViewState.
1.5.2.6.3.1 Создание и настройка элемента Button с именем redisplay на форме Процедура 1. Откройте форму Windows или веб-форму.
2. В меню Вид выберите команду Конструктор.
3. Если разрабатывается веб-сайт, выполните такие действия:
a) Щелкните между элементами управления ListBox и Button.
b) Нажмите клавишу ENTER три раза для создания двух строк между элементами управления c) В первой строке, созданной под элементом управления ListBox, введите "Дата начала заказа".
d) Во второй строке, созданной под элементом управления ListBox, введите "Дата окончания заказа".
4. Если разрабатывается проект Windows, выполните следующие действия:
a) Из панели инструментов перетащите два элемента управления Label в область справа от элемента управления ListBox. Разместите элементы Label друг над другом и над элементом управления b) Выберите первый элемент управления Label. В окне Свойства, установите для свойства Text значение "Начальная дата заказа".
c) Выберите второй элемент управления Label. В окне Свойства, установите для свойства Text значение "Конечная дата заказа".
5. Из панели инструментов перетащите элемент управления TextBox в область справа от элемента "Начальная дата заказа".
6. Щелкните элемент управления TextBox, чтобы выделить его.
7. В окне Свойства задайте для свойства ID (или Name) значение orderStartDate.
8. Из Панели инструментов перетащите элемент управления TextBox в область справа от элемента "Конечная дата заказа".
9. Щелкните элемент управления TextBox, чтобы выделить его.
10. В окне Свойства задайте для свойства ID (или Name) значение orderEndDate.
11. В меню Файл выберите команду Сохранить все.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.6.4 Изменение методов вызова подотчета Необходимо исправить метод ConfigureCrystalReports() и метод обработки события redisplay_Click() для получения информации из этих элементов управления TextBox, и применить их к методу SetDateRangeForOrders(), чтобы информация о параметрах обрабатывалась для подотчетов.
В предыдущем учебном пособии, Учебное пособие: чтение и установка дискретных параметров [стр. 392], эти методы создавались двумя разными способами, в зависимости от того, включено ли сохранение сеанса.
Проекты Windows не требуют сохранения сеанса. Веб-сайты обычно требуют сохранения сеанса.
Выберите одну из пошаговых процедур, приведенных ниже. Либо изменить методы, которые не включают в себя сохранение сеанса, либо изменить методы, которые включают в себя сохранение сеанса.
1.5.2.6.4.1 Изменение методов, которые не включают сохранение сеанса Если было создано Учебное пособие: чтение и установка дискретных параметров [стр. 392] предыдущего руководства и не было включено сохранение сеанса, выполните приведенные ниже действия. Если нужно включить сохранение сеанса, см. раздел Изменение методов, которые включают сохранение сессий [стр.
432].
1.5.2.6.4.1.1 Изменение метода ConfigureCrystalReports(), который не включает сохранение сеанса Процедура 1. В методе ConfigureCrystalReports() создайте несколько разрывов строк в коде после строк, которые назначают "Париж" и "Токио" в качестве переменных ArrayList.
2. В разрывах строк объявите и задайте жесткие значения двух строковых переменных, startDate и Dim startDate As String = "8/1/1997" Dim endDate As String = "8/31/1997" string startDate = "8/1/1997";
string endDate = "8/31/1997";
3. Создайте несколько разрывов строк в указанном выше коде, который связывает отчет с элементом управления CrystalReportViewer.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 4. В разрывах строк введите вызов метода SetDateRangeForOrders() и передайте ему отчет CustomersByCity и переменные startDate и endDate.
SetDateRangeForOrders(customersByCityReport, startDate, endDate) SetDateRangeForOrders(customersByCityReport, startDate, endDate);
Затем следует первоначальный код, который связывает отчет с элементом управления CrystalReportViewer.
5. В меню Файл выберите команду Сохранить все.
Результаты Далее измените повторное отображения метода обработки событий _Click.
1.5.2.6.4.1.2 Изменение метода redisplay_Click(), который не включает сохранение сеанса Процедура 1. В методе обработки событий redisplay_Click() создайте несколько разрывов строк в указанном выше коде, который связывает отчет с элементом управления CrystalReportViewer.
2. В разрывах строк объявите и задайте значения для двух строковых переменных, startDate и endDate, из элементов управления TextBox, добавленных к веб- или Windows-форме.
Dim startDate As String = orderStartDate.Text Dim endDate As String = orderEndDate.Text string startDate = orderStartDate.Text;
string endDate = orderEndDate.Text;
3. Введите вызов метода SetDateRangeForOrders() и передайте ему отчет CustomersByCity и переменные startDate и endDate.
SetDateRangeForOrders(customersByCityReport, startDate, endDate) SetDateRangeForOrders(customersByCityReport, startDate, endDate);
4. В меню Файл выберите команду Сохранить все.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.6.4.2 Изменение методов, которые включают сохранение сессий Если вы создали Учебное пособие: чтение и установка дискретных параметров [стр. 392] из предыдущего учебного пособия и включили сохранение сеанса, выполните приведенные ниже процедуры. В противном случае перейдите к разделу Изменение методов, которые не включают сохранение сеанса [стр. 430].
1.5.2.6.4.2.1 Изменение метода ConfigureCrystalReports(), который включает сохранение сеанса Процедура 1. В методе ConfigureCrystalReports() создайте несколько разрывов строк в коде после строки, которая объявляет и инициализирует ArrayList.
2. В разрывах строк объявите две строковые переменные, startDate и endDate.
Dim startDate As String Dim endDate As String string startDate;
string endDate;
3. В условном блоке Not IsPostBack введите значения по умолчанию для переменных startDate и startDate = "8/1/1997" endDate = "8/31/1997" startDate = "8/1/1997";
endDate = "8/31/1997";
4. В условном блоке Not IsPostBack назначьте сеансу переменные startDate и endDate.
Session("startDate") = startDate Session("endDate") = endDate Session["startDate"] = startDate;
Session["endDate"] = endDate;
5. В блоке Else, после получения экземпляра ArrayList из сеанса, извлеките переменные startDate и endDate из сеанса.
startDate = Session("startDate").ToString() endDate = Session("endDate").ToString() © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide startDate = Session["startDate"].ToString();
endDate = Session["endDate"].ToString();
С таким подходом вы достигните конца блока с переменными дат, назначенными в одном из случаев.
Эта процедура следует параллельной логике для назначения переменной ArrayList, которая была настроена в предыдущем руководстве.
6. Создайте несколько разрывов строк в указанном выше коде, который связывает отчет с элементом управления CrystalReportViewer.
7. В этих новых разрывах строк введите вызов метода SetDateRangeForOrders() и передайте отчет CustomersByCity и переменные startDate и endDate.
SetDateRangeForOrders(customersByCityReport, startDate, endDate) SetDateRangeForOrders(customersByCityReport, startDate, endDate);
Затем следует первоначальный код, который связывает отчет с элементом управления CrystalReportViewer.
8. В меню Файл выберите команду Сохранить все.
Результаты Далее измените повторное отображения метода обработки событий _Click.
1.5.2.6.4.2.2 Изменение метода redisplay_Click(), который включает сохранение сеанса Процедура 1. В методе обработки события redisplay_Click() создайте несколько разрывов строк в коде после строки, которая назначает экземпляр ArrayList переменной Session.
2. В разрывах строк назначьте свойство Text элементов TextBox с именами orderStartDate и orderEndDate переменной Session.
Session("startDate") = orderStartDate.Text Session("endDate") = orderEndDate.Text Session["startDate"] = orderStartDate.Text;
Session["endDate"] = orderEndDate.Text;
3. В меню Файл выберите команду Сохранить все.
Теперь значения сеанса startDate и endDate извлекаются и применяются при вызове метода ConfigureCrystalReports().
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Результаты Теперь все готово для сборки и запуска проекта, что позволяет убедиться, что значения TextBox сбрасывают параметр диапазона в подотчете. w 1.5.2.6.5 Проверка установки параметра подотчета Теперь все готово к тестированию настройки параметра подотчета из значений TextBox.
1.5.2.6.5.1 Проверка установки параметра подотчета Процедура 1. В меню Построение выберите команду Построение решения.
2. В случае возникновения ошибок сборки сразу исправьте их.
3. В меню Отладка выберите команду Начать.
4. В элементе управления ListBox, удерживая клавишу CTRL, выберите как минимум четыре разных города из списка.
5. В элементе управления TextBox с именем startDate введите "1/1/1997".
6. В элементе управления TextBox с именем endDate введите "12/31/1997".
7. Нажмите кнопку Повторно отобразить отчет.
Страница перезагрузится и отобразит записи о клиентах, которые живут в только что выбранных городах из списка, а также подотчет, отображающий заказы для диапазона дат, указанного выше.
8. В элементе управления CrystalReportViewer увеличьте Масштаб до 125%.
Страница перезагрузится с масштабом 125%. Выбранные для обоих городов значения и диапазон дат заказов сохранятся.
9. Вернитесь в среду Visual Studio и нажмите кнопку Остановить, чтобы выйти из режима отладки.
1.5.2.6.6 Приложение: Улучшения кода параметров диапазона для подотчетов Мы успешно изменили учебный проект для использования отчета, содержащего подотчет, и задали диапазон дат заказов для параметра диапазона, созданного в этом подотчете. В этом приложении вы узнаете о чтении и установке параметров в подотчете с функциями расширенного интерфейса API.
В предыдущих процедурах вы научились создавать вспомогательный метод SetDateRangeForOrders(), который использует классы ParameterFieldDefinitions и ParameterFieldDefinition.
В этом учебном пособии нужно удалить строки кода, которые используют классы ParameterFieldDefinitions и ParameterFieldDefinition. Затем вы изучите, как использовать классы © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide ParameterFields и ParameterField расширенного интерфейса SAP Crystal Reports API для написания кода метода SetDateRangeForOrders().
Расширенный интерфейс API содержит метод SetParameterValue(string parameterFieldName, object value, string subreport) для подотчетов с дискретными полями параметров. Таким образом, SetParameterValue() нельзя использовать в этом учебном пособии, поскольку подотчет содержит параметр диапазона.
1.5.2.6.6.1 Использование расширенного интерфейса SAP Crystal Reports API для подотчетов с параметрами диапазона Предпосылки Необходимо создать проект, как указано в инструкциях раздела Учебное пособие: чтение и установка параметров для подотчета [стр. 421].
Процедура 1. Откройте завершенный проект, как описано в данном пособии.
2. Откройте веб-форму или форму Windows.
3. В меню Вид выберите команду Код.
4. В методе SetDateRangeForOrders() удалите строки кода, которые используют классы ParameterFieldDefinitions или ParameterFieldDefinition. Удалите следующие строки кода:
Dim myParameterFieldDefinitions As ParameterFieldDefinitions = myReportDocument.DataDefinition.ParameterFields Dim myParameterFieldDefinition As ParameterFieldDefinition = myParameterFieldDefinitions(SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME) myParameterFieldDefinition.CurrentValues.Clear() myParameterFieldDefinition.CurrentValues.Add(myParameterRangeValue) myParameterFieldDefinition.ApplyCurrentValues(myParameterFieldDefinition.CurrentV ParameterFieldDefinitions parameterFieldDefinitions = reportDocument.DataDefinition.ParameterFields;
ParameterFieldDefinition parameterFieldDefinition = parameterFieldDefinitions[SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME];
parameterFieldDefinition.CurrentValues.Clear();
parameterFieldDefinition.CurrentValues.Add(parameterRangeValue);
parameterFieldDefinition.ApplyCurrentValues(parameterFieldDefinition.CurrentValue Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide На следующем шаге добавьте новые методы интерфейса SAP Crystal Reports API к методу SetDateRangeForOrders(), после кода, который задает тип границ диапазона.
5. В методе SetDateRangeForOrders() извлеките экземпляр ParameterFields из свойства ParameterFields экземпляра ReportDocument.
Dim myParameterFields As ParameterFields = reportDocument.ParameterFields ParameterFields parameterFields = reportDocument.ParameterFields;
6. Извлеките экземпляр ParameterField из индексированного класса ParameterFields, основанного на двух индексированных значениях: имя поля параметра подотчета и имя подотчета. Передайте два значения констант, определенных вверху класса.
Dim myParameterField As ParameterField = myParameterFields(SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME) ParameterField parameterField = parameterFields[SUBREPORT_PARAMETER_FIELD_NAME, SUBREPORT_NAME];
7. Вызовите метод Clear() свойства CurrentValues экземпляра ParameterField, чтобы удалить любые существующие значения из свойства CurrentValues.
myParameterField.CurrentValues.Clear() parameterField.CurrentValues.Clear();
8. Добавьте созданный ранее экземпляр ParameterRangeValue к свойству CurrentValues экземпляра ParameterField.
myParameterField.CurrentValues.Add(myParameterRangeValue) parameterField.CurrentValues.Add(parameterRangeValue);
Результаты Теперь можно собрать и запустить проект, считывать и задавать параметры диапазона для подотчета.
1.5.2.7 Учебное пособие: экспорт в различные форматы В данном пособии рассказывается о том, как выполнить экспорт отчета программными средствами.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Вступление В данном пособии рассказывается о том, как выполнить экспорт отчета программными средствами. В SAP Crystal Reports реализована возможность экспорта в множество разных форматов. Набор доступных возможностей зависит от установленной версии SAP Crystal Reports.
Каждая версия SAP Crystal Reports для разработчика Microsoft Visual Studio поддерживает следующие возможности экспорта:
SAP Crystal Reports (RPT) SAP Crystal Reports только для чтения (RPTR) Rich Text Format (RTF) Microsoft Word (97-2003) Microsoft Excel (97-2003) Microsoft Excel (97-2003), только данные Microsoft Excel (2007), только данные SAP Crystal Reports Developer поддерживает следующие дополнительные форматы:
Формат значений с разделителями (CSV) Microsoft Word - изменяемый (RTF) Текст с разделением табуляцией (TTX) Можно выбрать любой из этих форматов, нажать кнопку "Экспорт" для элемента управления CrystalReportViewer и экспортировать отчет в выбранном формате на локальный компьютер, на котором SAP Crystal Reports работает в приложении Windows или веб-приложении.
Экспортировать отчеты можно также программными средствами – в определенные каталоги на локальном веб-сервере или компьютере с ОС Windows.
В начале этого пособия даются инструкции по добавлению элемента управления DropDownList в вебформу или форму Windows и последующему заполнению его значениями из перечисления ExportFormatType в пространстве имен CrystalDecisions.Shared.
Затем создаются три конфиденциальных вспомогательных метода, которые содержат функцию экспорта и выполняют специальное конфигурирование для каждого формата экспорта.
На последнем этапе создается метод обработки события Click из элемента управления Button в веб-форме или форме Windows, и вызываются три конфиденциальных вспомогательных метода, которые выполняют экспорт.
Примеры кода Данное учебное пособие содержит образцы кода на языках Visual Basic и C#, демонстрирующие готовую версию проекта. Следуя инструкциям пособия, создайте новый проект или откройте проект примера кода, чтобы начать работу с завершенной версией.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Примеры кода хранятся в папках, упорядоченных по языку и типу проекта. Ниже приведены имена папок для каждой версии примера кода.
Веб-сайт C#: CS_Web_RDObjMod_Export Windows-проект C#: CS_Win_RDObjMod_Export Веб-сайт Visual Basic: VB_Web_RDObjMod_Export Windows-проект Visual Basic: VB_Win_RDObjMod_Export Связанные сведения Каталог образцов отчетов [стр. 15] 1.5.2.7.1 Добавление элементов управления в форму Windows или веб-форму В этом разделение описано добавление элементов управления DropDownList, Button и Label в форму Windows или веб-форму над элементом управления CrystalReportViewer.
1.5.2.7.1.1 Добавление элементов управления в вебформу или форму Windows Процедура 1. Откройте веб-форму или форму Windows.
2. В меню Вид выберите команду Конструктор.
3. Если разрабатывается веб-сайт, выполните такие действия:
a) Щелкните элемент управления CrystalReportViewer, чтобы выделить его.
b) Нажмите на клавиатуре клавишу СТРЕЛКА ВЛЕВО, чтобы появился мигающий курсор, а затем Элемент управления CrystalReportViewer отображается на одной строке.
4. Если разрабатывается проект Windows, выполните следующие действия:
a) Щелкните элемент управления CrystalReportViewer, чтобы выделить его.
b) Измените размер элемента управления CrystalReportViewer, чтобы над ним оставалось достаточно места для элемента управления ComboBox.
c) В окне Свойства задайте для свойства Anchor значения "Top, Bottom, Left, Right".
5. На панели инструментов перетащите элемент управления DropDownList (для веб-сайтов) или ComboBox (в проектах Windows) в положение над элементом управления CrystalReportViewer.
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Если в элементе управления DropDownList (ComboBox) при использовании Visual Studio 2005 или более поздней версии отображается задача Smart Task, нажмите клавишу Esc для ее закрытия.
6. Щелкните элемент управления DropDownList (ComboBox), чтобы выделить его.
7. В окне Свойства задайте для свойства ID значение "exportTypesList".
8. На панели инструментов перетащите элемент управления Button вправо от элемента управления DropDownList (ComboBox).
9. Щелкните элемент управления Button, чтобы выделить его.
10. В окне Свойства выполните следующие действия:
Задайте для свойства ID значение "exportByType".
Задайте для свойства Text значение "Экспортировать как выбранный тип".
11. На панели инструментов перетащите элемент управления Label вправо от элемента управления Button.
12. Щелкните элемент управления Label, чтобы выделить его.
13. В окне Свойства выполните следующие действия:
Задайте для свойства ID значение "message".
Оставьте свойство Text пустым.
Задайте для свойства Visible значение "False".
14. В меню Файл выберите команду Сохранить все.
Результаты Теперь необходимо заполнить элемент управления DropDownList из перечисления ExportFormatType пространства имен CrystalDecisions.Shared.
1.5.2.7.1.2 Заполнение элемента управления DropDownList из перечисления ExportFormatType для вебсайта Процедура 1. Откройте веб-форму.
2. В меню Вид выберите команду Код.
3. В нижней части метода ConfigureCrystalReports() добавьте условный блок Not IsPostBack.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide if (!IsPostBack) 4. В условном блоке задайте для свойства DataSource элемента управления ComboBox с именем exportTypesList значения перечисления ExportFormatType.
exportTypesList.DataSource = System.Enum.GetValues(GetType(ExportFormatType)) exportTypesList.DataSource = System.Enum.GetValues(typeof(ExportFormatType));
5. Вызовите метод DataBind() элемента управления DropDownList с именем exportTypesList, чтобы привязать значения к элементу управления.
exportTypesList.DataBind() exportTypesList.DataBind();
1.5.2.7.1.3 Заполнение элемента управления DropDownList из перечисления ExportFormatType для проекта Windows Процедура 1. Откройте форму Windows.
2. В меню Вид выберите команду Код.
3. В нижней части метода ConfigureCrystalReports() задайте для свойства DataSource элемента управления ComboBox с именем exportTypesList значения перечисления ExportFormatType.
exportTypesList.DataSource = System.Enum.GetValues(GetType(ExportFormatType)) exportTypesList.DataSource = System.Enum.GetValues(typeof(ExportFormatType));
1.5.2.7.2 Создание методов, выполняющих экспорт В этом разделе описано создание трех конфиденциальных вспомогательных методов, осуществляющих экспорт.
ExportSetup() © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide ExportSelection() ExportCompletion() Вызов этих методов осуществляется из метода обработки событий button click, о чем говорится далее в этом пособии. Для начала создайте вспомогательный метод ExportSetup().
Процедура 1. Откройте веб-форму или форму Windows.
2. В меню Вид выберите команду Код.
3. В верхней части класса добавьте три объявления класса.
Private exportPath As String Private myDiskFileDestinationOptions As DiskFileDestinationOptions Private myExportOptions As ExportOptions private string exportPath;
private DiskFileDestinationOptions diskFileDestinationOptions;
private ExportOptions exportOptions;
Позже эти вспомогательные классы будут созданы в методе ExportSetup().
4. В нижней части класса создайте конфиденциальный вспомогательный метод с именем ExportSetup() без возвращаемого значения.
Public Sub ExportSetup() private void ExportSetup() 5. В методе задайте в качестве строковой переменной exportPath корневой каталог на жестком диске.
exportPath = "C:\Exported\" exportPath = "C:\\Exported\\";
Если требуется поместить папку "Экспортированные" в веб-каталог веб-сервера, используйте в качестве префикса имени папки свойство Request.PhysicalApplicationPath.
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 6. Создайте условный блок, который проверяет, существует ли уже каталог в строке exportPath.
If Not System.IO.Directory.Exists(exportPath) Then if (!System.IO.Directory.Exists(exportPath)) 7. В условном блоке вызовите метод CreateDirectory() System.IO.Directory для создания каталога в строке exportPath.
System.IO.Directory.CreateDirectory(exportPath) System.IO.Directory.CreateDirectory(exportPath);
8. Вне условного блока создайте класс DiskFileDesintationOptions.
myDiskFileDestinationOptions = New DiskFileDestinationOptions() diskFileDestinationOptions = new DiskFileDestinationOptions();
9. Подставьте в экземпляр ExportOptions свойство ExportOptions экземпляра hierarchicalGroupingReport.
myExportOptions = hierarchicalGroupingReport.ExportOptions exportOptions = hierarchicalGroupingReport.ExportOptions;
10. Задайте в качестве свойства ExportDestinationType экземпляра ExportOptions выбор перечисления ExportDestinationType.DiskFile.
myExportOptions.ExportDestinationType = ExportDestinationType.DiskFile exportOptions.ExportDestinationType = ExportDestinationType.DiskFile;
11. Для проекта Windows очистите значения свойства ExportFormatOptions экземпляра ExportOptions. (Эта строка кода не требуется для веб-сайта, поскольку переменная автоматически очищается в каждом событии click.) myExportOptions.ExportFormatOptions = Nothing exportOptions.ExportFormatOptions = null;
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Результаты Следующим этапом является создание вспомогательного метода ExportSelection().
Процедура 1. Откройте веб-форму или форму Windows.
2. В меню Вид выберите команду Код.
3. В верхней части класса добавьте логическое объявление, которое используется для проверки того, чтобы ни один формат экспорта не был выбран.
Private selectedNoFormat As Boolean = True private bool selectedNoFormat = true;
4. В нижней части класса создайте конфиденциальный вспомогательный метод с именем ExportSelection() без возвращаемого значения.
Public Sub ExportSelection() private void ExportSelection() 5. В методе создайте оператор "Select Case" [Visual Basic] или "switch" [C#], ссылающийся на элементы перечисления ExportFormatType. Перечисление основано на свойстве SelectedIndex элемента управления DropDownList с именем exportTypesList, созданного во время предыдущей процедуры.
Select Case exportTypesList.SelectedIndex Case ExportFormatType.NoFormat Case ExportFormatType.CrystalReport Case ExportFormatType.RichText Case ExportFormatType.WordForWindows Case ExportFormatType.PortableDocFormat Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide Case ExportFormatType.HTML switch ((ExportFormatType)exportTypesList.SelectedIndex) case ExportFormatType.NoFormat:
case ExportFormatType.CrystalReport:
case ExportFormatType.RichText:
case ExportFormatType.WordForWindows:
case ExportFormatType.Excel:
case ExportFormatType.PortableDocFormat:
case ExportFormatType.HTML32:
case ExportFormatType.HTML40:
Результаты Метод ExportSelection() завершен. Следующим этапом является создание вспомогательного метода ExportCompletion().
1.5.2.7.2.3 Создание метода ExportCompletion() Процедура 1. Откройте веб-форму или форму Windows.
2. В меню Вид выберите команду Код.
3. В нижней части класса создайте конфиденциальный вспомогательный метод с именем ExportCompletion() без возвращаемого значения.
Public Sub ExportCompletion() private void ExportCompletion() © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 4. В методе создайте блок try/catch с классом Exception, который рассматривается как переменная с именем "ex".
Catch ex As Exception catch (Exception ex) 5. В блоке try создайте условный блок для проверки логической переменной – selectedNoFormat.
If selectedNoFormat Then if (selectedNoFormat) 6. В блоке If задайте в качестве свойства Text элемента управления Label с именем message константу FORMAT_NOT_SUPPORTED класса MessageConstants.
message.Text = MessageConstants.FORMAT_NOT_SUPPORTED message.Text = MessageConstants.FORMAT_NOT_SUPPORTED;
7. В блоке Else вызовите метод Export() экземпляра hierarchicalGroupingReport.
hierarchicalGroupingReport.Export() hierarchicalGroupingReport.Export();
8. Не выходя из блока Else, задайте в качестве свойства Text элемента управления Label с именем message константу SUCCESS класса MessageConstants.
message.Text = MessageConstants.SUCCESS message.Text = MessageConstants.SUCCESS;
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 9. В блоке catch задайте в качестве свойства True элемента управления Label с именем message константу FAILURE класса MessagesConstants, а затем добавьте к ней свойство Message параметра Exception.
message.Text = MessageConstants.FAILURE & ex.Message message.Text = MessageConstants.FAILURE + ex.Message;
10. Вне блока try/catch задайте в качестве свойства Visible элемента управления Label с именем message значение True.
message.Visible = True message.Visible = true;
Результаты Создание трех конфиденциальных вспомогательных методов, осуществляющих экспорт, завершено.
1.5.2.7.3 Создание методов, настраивающих различные форматы экспорта Из этого раздела вы узнаете, как создать конфиденциальные вспомогательные методы, настраивающие различные форматы экспорта. Применение всех этих методов практически одинаково, за исключением ConfigureExportToHtml32() и ConfigureExportToHtml40(), в которых различаются способы экспорта формата HTML.
ConfigureExportToRpt() ConfigureExportToRtf() ConfigureExportToDoc() ConfigureExportToXls() ConfigureExportToPdf() ConfigureExportToHtml32() ConfigureExportToHtml40() © 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.7.3.1 Создание вспомогательного метода ConfigureExportToRpt() Процедура 1. Откройте веб-форму или форму Windows.
2. В меню Вид выберите команду Код.
3. В нижней части класса создайте конфиденциальный вспомогательный метод с именем ConfigureExportToRpt() без возвращаемого значения.
Public Sub ConfigureExportToRpt() private void ConfigureExportToRpt() 4. В методе в качестве свойства ExportFormatType экземпляра ExportOptions задайте выбор CrystalReport из перечисления ExportFormatType.
myExportOptions.ExportFormatType = ExportFormatType.CrystalReport exportOptions.ExportFormatType = ExportFormatType.CrystalReport;
5. Задайте в качестве свойства DiskFileName экземпляра DiskFileDestinationOptions строку exportPath, а затем добавьте к ней имя документа с расширением файла.rpt.
myDiskFileDestinationOptions.DiskFileName = exportPath & "Report.rpt" diskFileDestinationOptions.DiskFileName = exportPath + "Report.rpt";
6. Наконец, задайте в качестве свойства ExportDestinationOptions экземпляра ExportOptions экземпляр DiskFileDestinationOptions, сконфигурированный на предыдущем этапе.
myExportOptions.ExportDestinationOptions = myDiskFileDestinationOptions exportOptions.ExportDestinationOptions = diskFileDestinationOptions;
Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.7.3.2 Создание вспомогательного метода ConfigureExportToRtf Процедура 1. Откройте веб-форму или форму Windows.
2. В меню Вид выберите команду Код.
3. В нижней части класса создайте конфиденциальный вспомогательный метод с именем ConfigureExportToRtf() без возвращаемого значения.
Public Sub ConfigureExportToRtf() ConfigureExportToRtf() 4. В методе в качестве свойства ExportFormatType экземпляра ExportOptions задайте выбор RichText из перечисления ExportFormatType.
myExportOptions.ExportFormatType = ExportFormatType.RichText exportOptions.ExportFormatType = ExportFormatType.RichText;
5. Задайте в качестве свойства DiskFileName экземпляра DiskFileDestinationOptions строку exportPath, а затем добавьте к ней имя документа с расширением файла.rtf.
myDiskFileDestinationOptions.DiskFileName = exportPath & "RichTextFormat.rtf" diskFileDestinationOptions.DiskFileName = exportPath + "RichTextFormat.rtf";
6. Наконец, задайте в качестве свойства ExportDestinationOptions экземпляра ExportOptions экземпляр DiskFileDestinationOptions, сконфигурированный на предыдущем этапе.
myExportOptions.ExportDestinationOptions = myDiskFileDestinationOptions exportOptions.ExportDestinationOptions = diskFileDestinationOptions;
© 2014 SAP AG или аффилированная компания SAP. Все права Руководство SAP Crystal Reports для Visual Studio.NET SDK Developer Guide 1.5.2.7.3.3 Создание вспомогательного метода ConfigureExportToDoc Процедура 1. Откройте веб-форму или форму Windows.
2. В меню Вид выберите команду Код.
3. В нижней части класса создайте конфиденциальный вспомогательный метод с именем ConfigureExportToDoc() без возвращаемого значения.
Public Sub ConfigureExportToDoc() ConfigureExportToDoc() 4. В методе задайте в качестве свойства ExportFormatType экземпляра ExportOptions выбор WordForWindows из перечисления ExportFormatType.
myExportOptions.ExportFormatType = ExportFormatType.WordForWindows exportOptions.ExportFormatType = ExportFormatType.WordForWindows;
5. Задайте в качестве свойства DiskFileName экземпляра DiskFileDestinationOptions строку exportPath, а затем добавьте к ней имя документа с расширением файла.doc.
myDiskFileDestinationOptions.DiskFileName = exportPath & diskFileDestinationOptions.DiskFileName = exportPath + "Word.doc";