Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Ищу стандартный подход/паттерн (SQL + фильтры) / 12 сообщений из 12, страница 1 из 1
07.09.2010, 20:27
    #36834753
belykh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ищу стандартный подход/паттерн (SQL + фильтры)
Имеется форма (много похожих форм) и панель фильтров. На панели располагаются эдиты, чекбоксы, комбобоксы, радиокнопки и т.п.
Совокупность заполнения этих контролов дает фильтр в условие "WHERE" SELECT-запроса.
При чем, некоторые контролы имеют приоритет (если заполнен, то другие контролы игнорируются)
Имеются зависимые контролы (чекбокс + эдит).
В итоге, по нажатию кнопки все контролы проверяются на заполнение и клеится фильтр.
Ну, вот в общих словах.

Теперь вопрос.
Существует ли готовое решение или паттерн для подобного хозяйства?
Инструмент разработки - C++ Builder. Поэтому проектирование превратилось в анти-паттерн "Магическая кнопка".
...
Рейтинг: 0 / 0
07.09.2010, 21:08
    #36834796
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ищу стандартный подход/паттерн (SQL + фильтры)
TFrame?
...
Рейтинг: 0 / 0
08.09.2010, 05:46
    #36835002
belykh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ищу стандартный подход/паттерн (SQL + фильтры)
Почему TFrame?

Я имел в виду, подход, который упростит формирование фильтра для SELECT
...
Рейтинг: 0 / 0
08.09.2010, 13:31
    #36835827
iscrafm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ищу стандартный подход/паттерн (SQL + фильтры)
belykhПочему TFrame?

Я имел в виду, подход, который упростит формирование фильтра для SELECT
поищите в инете, был раньше PuterSoft SDK. Один из его компонентов как раз этим занимается. Для C++ Builder, была версия, если не ошибаюсь. Выглядит примерно так . Пользователь формирует список условий, на выходе - WHERE
...
Рейтинг: 0 / 0
08.09.2010, 13:33
    #36835831
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ищу стандартный подход/паттерн (SQL + фильтры)
Могу поделиться идеей реализации. При разработке приложения оказалось, что подавляющее большинство контролов, задающих условия выбора, являются комбобоксами и списками. Т.е. экозитка типа групп опшионов с эдитами около некоторых оказалась не востребована. Вернее там, где она есть, сделана конкретная кодировка "в лоб".

А вот все остальное привелось к следующему виду:

1. Имеется словарь пользовательских источников данных - VIEW, табличные FUNC, процедуры PROC

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

3. Имеется реестр всех фильтрующих контролов - комбо и списков.

Каждый контрол содержит баунд столбец, один или более столбцов для наглядного вывода и скрытый столбец условий, задающий кусочек WHERE, который будет использоваться для фильтрации источника, с которым будет связан фильтрующий контрол.

Несколько фильтрующих контролов, связанных с одним и тем же источником в пределах пользовательской формы, соединяются через AND.

Для процедур фильтрующие контролы обеспечиват подстановку параметров.

Для табличных функций фильтрующие контролы обеспечиват подстановку параметров или куски WHERE.
...
Рейтинг: 0 / 0
08.09.2010, 13:35
    #36835840
eNose
Участник
[не активирован]
[не одобрен]
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ищу стандартный подход/паттерн (SQL + фильтры)
belykhПочему TFrame?

Я имел в виду, подход, который упростит формирование фильтра для SELECT ну да, я уже понял.
...
Рейтинг: 0 / 0
08.09.2010, 14:33
    #36836017
belykh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ищу стандартный подход/паттерн (SQL + фильтры)
iscrafm
поищите в инете, был раньше PuterSoft SDK.

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

Сейчас уже реализованный интерфейс (куча этитов и комбобоксов) и сотрудники к нему привыкли.

Программист-ЛюбительМогу поделиться идеей реализации. При разработке приложения оказалось, что подавляющее большинство контролов, задающих условия выбора, являются комбобоксами и списками. Т.е. экозитка типа групп опшионов с эдитами около некоторых оказалась не востребована. Вернее там, где она есть, сделана конкретная кодировка "в лоб".

А вот все остальное привелось к следующему виду:

1. Имеется словарь пользовательских источников данных - VIEW, табличные FUNC, процедуры PROC

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

3. Имеется реестр всех фильтрующих контролов - комбо и списков.

Каждый контрол содержит баунд столбец, один или более столбцов для наглядного вывода и скрытый столбец условий, задающий кусочек WHERE, который будет использоваться для фильтрации источника, с которым будет связан фильтрующий контрол.

Несколько фильтрующих контролов, связанных с одним и тем же источником в пределах пользовательской формы, соединяются через AND.

Для процедур фильтрующие контролы обеспечиват подстановку параметров.

Для табличных функций фильтрующие контролы обеспечиват подстановку параметров или куски WHERE.
Надо обмозговать :)
...
Рейтинг: 0 / 0
08.09.2010, 14:58
    #36836114
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ищу стандартный подход/паттерн (SQL + фильтры)
belykhНадо обмозговать :)Это точно
...
Рейтинг: 0 / 0
08.09.2010, 19:02
    #36836852
antares0
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ищу стандартный подход/паттерн (SQL + фильтры)
belykh,
Алгеброй он называется. Если помните школьный курс маитематики то там были (a+b)^2 да и вся тригонометрия на этом построена. Пишете список фильтров. Пишете SQL-ные условия. Пишем возможные преобразования одно а другое. Сидим и потихоньку на бумажке упрощаем. ТеорКат. и прочию тяжелую математику уж не предлагаю. Пролог мог бы помочь, но тоже требует соответвующих знаний.
...
Рейтинг: 0 / 0
08.09.2010, 19:37
    #36836890
softwarer
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ищу стандартный подход/паттерн (SQL + фильтры)
belykhИмеется форма (много похожих форм) и панель фильтров. На панели располагаются эдиты, чекбоксы, комбобоксы, радиокнопки и т.п. Совокупность заполнения этих контролов дает фильтр в условие "WHERE" SELECT-запроса.
Плохо. Сразу отсекаются потребности умных пользователей.

belykhПри чем, некоторые контролы имеют приоритет (если заполнен, то другие контролы игнорируются)
Просто кошмар. Надеюсь, они хоть визуально дисейблятся.

belykhИнструмент разработки - C++ Builder. Поэтому проектирование превратилось в анти-паттерн "Магическая кнопка".
Он инструмента тут ничего не зависит.

belykhСуществует ли готовое решение или паттерн для подобного хозяйства?
Именно для такого - инструмента не встречал. Стандартные решения фильтров обычно делаются на основе QBE или expression builder.

Паттерн - в любом случае начать следует с того, что отделить "формирователь фильтров", "условие фильтрации" и GUI, который эти условия формирует. То есть, к примеру, желание изменить интерфейс с "панель с кучей всего" на "листбокс фильтруемых полей и справа панелька с контролами для этого поля" не должно быть заметно для "собственно фильтров".
...
Рейтинг: 0 / 0
09.09.2010, 06:13
    #36837226
belykh
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ищу стандартный подход/паттерн (SQL + фильтры)
softwarerПлохо. Сразу отсекаются потребности умных пользователей.
В большей массе умные пользователи встречаются редко, поэтому делается под основную массу.

softwarerПросто кошмар. Надеюсь, они хоть визуально дисейблятся.
С визуализацией более или менее (приоритетные с жирным лейблом). Пользователи привыкли.

Собственно, что дали - с тем и пришлось работать. Идея не моя - теперь приходится разгребать готовое. По началу я был в шоке от проекта. Коментариев ноль (абсолютно). Все имена контролов типа Edit1, ..., Edit105... Оформления кода просто не существует...

softwarerПаттерн - в любом случае начать следует с того, что отделить "формирователь фильтров", "условие фильтрации" и GUI, который эти условия формирует. То есть, к примеру, желание изменить интерфейс с "панель с кучей всего" на "листбокс фильтруемых полей и справа панелька с контролами для этого поля" не должно быть заметно для "собственно фильтров".
Так что от кучи контролов не уйти (на переделку сотни интерфейсов времени нет).
--
Идея с алгеброй - супер! Вот отвертку по-больше найду и прикручу тригонометрию к SQL
...
Рейтинг: 0 / 0
09.09.2010, 09:24
    #36837278
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ищу стандартный подход/паттерн (SQL + фильтры)
Мне понравилось реализация условия WHERE в виде "синтаксического дерева".
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Ищу стандартный подход/паттерн (SQL + фильтры) / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]