H M
Внедрения Демо Мнения Oracle Клиентам Контакты Работа
Запросы по образцам в Списках
Универсального интерфейса АСР Fastcom
(Query by Example, QBE)

Введение

В АСР «Fastcom» применяется принцип поиска необходимой информации, называемый QBE (Query by Example).

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

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

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

Текст в любой ячейке преобразуется в одно или несколько условий (предикатов), применяемых к тому столбцу, в котором введён текст. Условия, указанные в одной строке объединяются отношением «И». Несколько строк с условиями объединяются отношением «Или».

Пример:

Указание условий QBE в формах АСР Fastcom

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

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

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

CONTRACT_NO like '%000%' and CONTRACT_DATE >= To_DATE('01.01.13', 'DD.MM.RR')
or CONTRACT_DATE < To_DATE('01.01.13', '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 - столбец с форматом числа
Текст1><Текст2 Между Col between 'Текст1' and 'Текст2' Col - текстовый столбец
Col between Текст1 and Текст2 Col - числовой столбец без указания формата
Col between To_Date('Текст1','Формат')
and To_Date('Текст2','Формат')
Col - столбец с форматом даты/времени
Col between To_Number('Текст1','Формат')
and To_Number('Текст2','Формат')
Col - столбец с форматом числа
!Условие Отрицание not Условие Добавляет отрицание к последующему условию
Текст1 # Текст2 SQL выражение «как есть» Текст1 Col Текст2 Решётка будет заменена на код текущего столбца Списка. Никаких других преобразований не производится

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

СтолбецТекст условияИтоговый предикат
№ договора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 говорит о том, что Вы сами будете составлять синтаксически правильное условие для текущего столбца. Решётка может входить в текст один или несколько раз. Каждая решётка будет заменена на код текущего столбца (без обрамляющих пробелов!). Условие может содержать один или несколько предикатов и состоять их любых синтаксически правильных SQL-конструкций:

  • Системных функций
  • Функций схемы АСР Fastcom
  • Текстовых констант в одинарных кавычках
  • Кодов других столбцов
  • Подзапросов

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

СтолбецТекст условияИтоговый предикат
№ договора#=LEGAL_STATUS||IDCONTRACT_NO=LEGAL_STATUS||ID
Дата#>SysDate-1CONTRACT_DATE>SysDate-1
Клиент# not like '=%'FULLNAME not like '=%'
Конвертов#>2 and #<>10ENVELOPE_CNT>2 and ENVELOPE_CNT<>10
ID договора# not in (Select CONTRACT_ID from CT_T_CONTACT_PERSON where Position like 'DIR%')ID not in (Select CONTRACT_ID from CT_T_CONTACT_PERSON where Position like 'DIR%')

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

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

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