Возможно, самым простым пользовательским интерфейсом было бы что-то вроде:
Find customers with
All of these Any of these None of these
[] retail [] retail [] retail
[] chain [] chain [] chain
[] contractor [] contractor [] contractor
[] wholesale [] wholesale [] wholesale
Конечные пользователи имеют серьезные проблемы со сложными логическими конструкциями. На этот счет был проведен ряд исследований (И им довольно легко понять, но ИЛИ сложно). Предоставьте своим конечным пользователям доступ к генератору логических выражений общего назначения, и вы без конца прыгаете в кроличью нору.
Возможно, вы могли бы использовать расширенный поиск Google для уточнения поиска. Если повезет, пользователи будут с этим знакомы.
В базе данных MS Access есть мастер создания отчетов. Пользователю посторожить SQL-запрос интуитивно понятным способом. TOAD также имеет мастер для фильтрации запросов.
Надеюсь, это вам поможет.
Для большей мощности и гибкости, чем вы можете достичь с фиксированными списками полей, существует запрос по примеру , хорошо зарекомендовавший себя подход, который позволяет создавать сложные Логические выражения.
Для действительно графических способов задания неограниченного числа произвольных логических выражений существует пара, использующая метафоры путей:
Калейдозапрос Мюррея, Патона и Брайса (Journal of Visual Languages & Computing Volume 11, Issue 2, April 2000, p151-189)
Filer / flow Шнейдермана (Материалы 54-го ежегодного собрания Американского общества информационных наук, том 28, Вашингтон, округ Колумбия, 27-31 октября 1991 г., {{ 1}} p379-384).
Несмотря на то, что они лучше логических выражений в стиле SQL, все они являются относительно сложными пользовательскими интерфейсами, которые, вероятно, требуют некоторой практики для правильного использования. Таким образом, любая такая возможность специальных запросов, вероятно, должна быть изолирована как «продвинутая» функция. В большинстве приложений у пользователей есть несколько очень специфических типов запросов, на которые приходится подавляющая часть их работы (например, счета с просрочкой более n дней). Для этого лучше всего подходит простой диалог для выбора шаблонных или полу-шаблонных запросов, который должен быть пользовательским интерфейсом по умолчанию.