Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

In this example, we will use a Multi-Selection Combo Box to enable a dynamic set of fields to use in a SQL query, and to pass a list of possible values to use in a SQL “Where…” expression. This example uses the sample “Process” database (process.mdb) installed with Dream Report

...






В этом примере будет рассмотрена динамическая замена набора тэгов в поле со списком с использованием SQL запросов и передача списка возможных значений с использованием оператора SQL “Where…”.  Этот пример использует базу данных process.mdb, которая входит в дистрибутив Dream Report.

Info

Примечание:

Эти строки должны быть добавлены в файл DreamReport.ini file, который расположен в \ODS\Dream Report\System

[AutoAddQuotes]

Use=no

...






В студии Dream Report

...

, в меню «Инструменты» необходимо выбрать  Менеджер DSN, и создать ODBC DSN, назвав его “Process”, которое описывает “Process” DSN:

...

Set the “Display Mode” to “Display as Selection Box”, and ensure that the “Multi-Selection” option is checked

...

Configure the “Display Data from:” option. In this example, we will execute a SQL Query to get a list of users from the Batch_Data table in the Process database. This list could also be populated with a manually-entered list of items, Batch ID’s, etc.

...

In this example, we will execute a SQL Query to get a list of users from the Batch_Data table in the Process database:

Image Removed

...

Set the “Display Mode” to “Display as List Box”, and ensure that the “Multi-Selection” option is checked

...

Configure the “Display Data from:” option to be “Manual Values”, and enter Tank1, Tank2 and Tank3 as available options:

Image Removed

...

Image Added

  1. Добавить элемент Поле со списком (меню Веб-элементы) в Веб отчёт и назвать его “cb_User

2. Установить “Режим отображения” в “Показать в виде списка” и разрешить “Множественный выбор”.

3. Настроить опцию “Показывать данные из:”. В этом примере используется SQL запросы для получения списка пользователей из таблицы Batch_Data, которая находится в базе данных Process. Этот список может быть также заполняться данными, которые введены вручную, номерами батчей и т.д.

Image Added

4. Добавить второй список в отчёт, назвав его “cb_Tag

  1. 5. Установить “Режим отображения” в “Показать в виде списка” и разрешить “Множественный выбор”.

    6. Настроить опцию «Показывать данные из:» в “Значения, занесённые вручную”, и ввести Tank1, Tank2 и Tank3:

  2. Image Added


7. На панели объектов отчёта справа выбрать объект «Выражение» и добавить его в отчёт, назвав его “Expr1

8. В поле ввода выражения необходимо написать следующую функцию, которая описывает первое поле со списком (“cb_User”): OdsObjComboGetSelectedListQuoted('[

...

on#cb_User]')

...

Under the “Result Representation” tab, you may choose to un-check the “Visible” option, but during development, it is a good idea to keep this visible, to verify what is being passed into the subsequent SQL query

...

9.На вкладке “Внешний вид”, пользователь может снять выбор опции “Видимый”, но во время разработки хорошей идеей будет оставить его видимым, чтобы проверить правильность передачи параметров SQL запросов.

10. Далее, создаём другой объект «Выражение» и называем его “Expr2”.

11. В этом выражении вводится текст обработки для второго поля со списком (“cb_Tag”): OdsObjComboGetSelectedList('[

...

on#cb_Tag]')

...

 From the right-side toolbar, select and add a SQL Query Table object to the report

...

 Select “dsnProcess” from the “ODBC Database Source”

...

12. На этой же панели выбираем и добавляем в отчёт SQL таблицу

13. Выбираем “Process” из списка “База данных”

14. Для этого запроса, запросим список тэгов уровня переменных Tank (который будет передан в таблицу из поля со списком “cb_Tag”) и значение счётчика из таблицы Batch_Data, где Счётчик =500 – то есть, этот запрос имеет динамический вариант запроса “Select”, и фиксированное выражение “Where”. Введём следующее SQL выражение:

Select [f#Expr2], Counter from Batch_Data where Counter=

...

50

...

From the right-side toolbar, select and add another SQL Query Table object to the report

...

 Select “dsnProcess” from the “ODBC Database Source”

...


...

Image Added



15. Выбрать ещё один объект SQL таблица


16. Выбираем “Process” из списка “База данных”


17. Для второй таблицы, получим список тэгов с названием Motor (которые будут переданы через поле со списком “cb_Tag”) из таблицы Batch_Data, где Счётчик = 500 и пользователь один из выбранных пользователей в поле со списком “cb_Users” – то есть, этот запрос будет иметь динамический оператор “Select”, и динамическое выражение “Where”.  Введём следующее выражение: 

Select [f#Expr1], User from Batch_Data Where Counter=500 And User IN ([f#Expr2])

Image Removed

...

Add an Action Button (from the Web Elements tab) to the report, with the Button Caption “Refresh”, and the action being “Refresh Report”


The resulting report should look similar to this in Studio:

...

Running the report in a web browser, with user-selections in the Combo boxes, results in the following:

Image Removed

Связанные статьи

Filter by label (Content by label)showLabelsfalsemax5spacescom.atlassian.confluence.content.render.xhtml.model.resource.identifiers.SpaceResourceIdentifier@3e4c322showSpacefalsesortmodifiedreversetruetypepagecqllabel in ("dreamreport","tech-note","question","how-to","report","sql","dream","answers") and type = "page" and space = "DRRUS"labelsdream report dreamreport answers question sql tech-note how-toImage Added


18. Далее, добавим в отчёт Кнопку действия (меню Веб-элементы), с названием “Обновить”, и функцией “Обновить отчёт”


19. Отчёт должен выглядеть в студии так:

Image Added

20. Запустим отчёт в Веб браузере и получим следующие результаты:

Image Added

Связанные статьи



Page Properties
hiddentrue


Related issues


...