Демо PostrgeSQL ФОРС Контакты Работа

Концепция QBE - Query by Example (поиск по образцам) в Списках LUI

QBE – способ задания условий отбора нужных строк в Списках LUI максимально наглядным и быстрым способом. В результате в Списке остаются только те строки, которые соответствуют текстовым образцам, заданным в полях, на которые необходимо наложить ограничения. Условия, заданные таким способом, легко читаются и понимаются пользователем, так как интуитивно понятны и наглядны. Кроме того, установленные условия легко подвергаются коррекции, модификации, сохранению под именем и быстрому применению в нужный момент.

Общие принципы

Абсолютно в любом Списке LUI можно использовать режим Запроса по образцам (QBE). Для перехода в него нажмите F7 или кликните на кнопку      в ToolBar Списка. При этом форма очищается от данных и пользовать может вводить тексты в любое видимое поле одной или нескольких строк этого Списка. Текст в любой ячейке преобразуется в одно или несколько условий (предикатов), применяемых к тому столбцу, в котором введён текст. Условия, указанные в одной строке объединяются отношением «И». Несколько строк с условиями объединяются отношением «Или». Для применения заданных условий отбора нажмите F8 или кликните на кнопку 

Пример:

Договоры ООО «Форс-центр разработки»
№ договораДатаКлиентЮр. ст.КонвертовОбъектов
%000%>=01.01.11
<01.01.11ЮЛ
3

Данное условие интерпретируется так:

Отобразить все договоры, которые в номере содержат три нуля подряд и заключены в 2011 году, а также договоры с юридическими лицами, заключёнными до 2011 года и кроме того, любые договоры на ровно три объекта.

На уровне SQL условия из данного примера порождают следующие предикаты:

contract_no like '%000%' and contract_date>=to_date('01.01.11','DD.MM.RR') or contract_date<to_date('01.01.11','DD.MM.RR') and legal_status='ЮЛ' or n_object=3

Язык предикатов

Каждая ячейка в режиме QBE может содержать текст условия (предикат), которое задаётся одним из перечисленных способов:

ШаблонНазваниеПредикатПримечание
Текст (не содержит %, не начинается с =)РавноCol = 'Текст'Col – текстовый столбец
Col = ТекстCol – числовой столбец без указания формата
Col = to_date('Текст', 'Формат')Col – столбец с форматом даты/времени
Col = to_number('Текст', 'Формат')Col – столбец с форматом числа
=ТекстРавноCol = 'Текст'Col – текстовый столбец
Col = ТекстCol – числовой столбец без указания формата
Col = to_date('Текст', 'Формат')Col – столбец с форматом даты/времени
Col = to_number('Текст', 'Формат')Col – столбец с форматом числа
Текст не начинается с =ПохожCol like 'Текст'Текст содержит %, Col – текстовый столбец
to_char(Col, 'Формат') like 'Текст'Текст содержит %, Col – столбец c форматом даты/времени или числа
<>ТекстНе равноCol != 'Текст'Col – текстовый столбец
Col != ТекстCol – числовой столбец без указания формата
Col != to_date('Текст', 'Формат')Col – столбец с форматом даты/времени
Col != to_number('Текст', 'Формат')Col – столбец с форматом числа
>ТекстБольшеCol > 'Текст'Col – текстовый столбец
Col > ТекстCol – числовой столбец без указания формата
Col > to_date('Текст', 'Формат')Col – столбец с форматом даты/времени
Col > to_number('Текст', 'Формат')Col – столбец с форматом числа
<ТекстМеньшеCol < 'Текст'Col – текстовый столбец
Col < ТекстCol – числовой столбец без указания формата
Col < to_date('Текст', 'Формат')Col – столбец с форматом даты/времени
Col < to_number('Текст', 'Формат')Col – столбец с форматом числа
>=ТекстБольше или равноCol >= 'Текст'Col – текстовый столбец
Col >= ТекстCol – числовой столбец без указания формата
Col >= to_date('Текст', 'Формат')Col – столбец с форматом даты/времени
Col >= to_number('Текст', 'Формат')Col – столбец с форматом числа
<=ТекстМеньше или равноCol <= 'Текст'Col – текстовый столбец
Col <= ТекстCol – числовой столбец без указания формата
Col <= to_date('Текст', 'Формат')Col – столбец с форматом даты/времени
Col <= to_number('Текст', 'Формат')Col – столбец с форматом числа
Txt1><Txt2МеждуCol between 'Txt1' and 'Txt2'Col – текстовый столбец
Col between Txt1 and Txt2Col – числовой столбец без указания формата
Col between to_date('Txt1', 'Формат') and to_date('Txt2', 'Формат')Col – столбец с форматом даты/времени
Col between to_number('Txt1', 'Формат') and to_number('Txt2', 'Формат')Col – столбец с форматом числа
!УсловиеОтрицаниеnot УсловиеДобавляет отрицание к последующему условию

Примеры задания условий:

СтолбецТекст условияРезультирующий текст предиката
№ договораF0104-46955contract_no = 'F0104-46955'
КлиентЗАО%fullname like 'ЗАО%'
Клиент=ЗАО%fullname = 'ЗАО%'
Документ=doc_type_code is null
Документ<>doc_type_code is not null
Документ!not doc_type_code is null
Документ!<>not doc_type_code is not null
№ договора==contract_no = '='
Конвертов>1envelope_cnt > 1
Объектов%0to_char(n_object) like '%0'
Дата>15.12.11contract_date > to_date('15.12.11', 'DD.MM.RR')
Дата01.12.11><01.01.12contract_date between to_date('01.12.11', 'DD.MM.RR') and to_date('01.01.12', 'DD.MM.RR')

Попробуйте сами: Договоры

  • Для перехода в режим QBE нажмите F7 или кликните на кнопку      на ToolBar;
  • Для применения заданных условий отбора нажмите F8 или кликните на кнопку .

Сохранение условий

Введённые при помощи QBE условия (наряду с порядком сортировки) могут быть сохранены в пользовательских конфигурациях, чтобы потом быть быстро применёнными при выборе сохранённой конфигурации из списка всех таких конфигураций. Если пользователь выбирает конфигурацию, то все ранее введённые условия QBE удаляются, а вместо них подставляются условия QBE из сохранённой конфигурации. После выбора конфигурации пользователь может скорректировать условия QBE и при желании сохранить их в той же или новой конфигурации.

© ФОРС – Центр разработки. Все права защищены