|
|
|
Ищу стандартный подход/паттерн (SQL + фильтры)
|
|||
|---|---|---|---|
|
#18+
Имеется форма (много похожих форм) и панель фильтров. На панели располагаются эдиты, чекбоксы, комбобоксы, радиокнопки и т.п. Совокупность заполнения этих контролов дает фильтр в условие "WHERE" SELECT-запроса. При чем, некоторые контролы имеют приоритет (если заполнен, то другие контролы игнорируются) Имеются зависимые контролы (чекбокс + эдит). В итоге, по нажатию кнопки все контролы проверяются на заполнение и клеится фильтр. Ну, вот в общих словах. Теперь вопрос. Существует ли готовое решение или паттерн для подобного хозяйства? Инструмент разработки - C++ Builder. Поэтому проектирование превратилось в анти-паттерн "Магическая кнопка". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2010, 20:27 |
|
||
|
Ищу стандартный подход/паттерн (SQL + фильтры)
|
|||
|---|---|---|---|
|
#18+
TFrame? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.09.2010, 21:08 |
|
||
|
Ищу стандартный подход/паттерн (SQL + фильтры)
|
|||
|---|---|---|---|
|
#18+
Почему TFrame? Я имел в виду, подход, который упростит формирование фильтра для SELECT ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2010, 05:46 |
|
||
|
Ищу стандартный подход/паттерн (SQL + фильтры)
|
|||
|---|---|---|---|
|
#18+
belykhПочему TFrame? Я имел в виду, подход, который упростит формирование фильтра для SELECT поищите в инете, был раньше PuterSoft SDK. Один из его компонентов как раз этим занимается. Для C++ Builder, была версия, если не ошибаюсь. Выглядит примерно так . Пользователь формирует список условий, на выходе - WHERE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2010, 13:31 |
|
||
|
Ищу стандартный подход/паттерн (SQL + фильтры)
|
|||
|---|---|---|---|
|
#18+
Могу поделиться идеей реализации. При разработке приложения оказалось, что подавляющее большинство контролов, задающих условия выбора, являются комбобоксами и списками. Т.е. экозитка типа групп опшионов с эдитами около некоторых оказалась не востребована. Вернее там, где она есть, сделана конкретная кодировка "в лоб". А вот все остальное привелось к следующему виду: 1. Имеется словарь пользовательских источников данных - VIEW, табличные FUNC, процедуры PROC 2. Имеется реестр пользовательских форм разных видов * вложенный грид * карточка (содержит на вкладках вложенный грид с набором фильтрующие контролов, оределяющих WHERE его источника данных) * табличная форма (окно, содержащее грид с набором фильтрующие контролов, оределяющих WHERE его источника данных * структура с деревом слева и таблицей (для корневых узлов) либо карточкой (для обычных узлов) справа 3. Имеется реестр всех фильтрующих контролов - комбо и списков. Каждый контрол содержит баунд столбец, один или более столбцов для наглядного вывода и скрытый столбец условий, задающий кусочек WHERE, который будет использоваться для фильтрации источника, с которым будет связан фильтрующий контрол. Несколько фильтрующих контролов, связанных с одним и тем же источником в пределах пользовательской формы, соединяются через AND. Для процедур фильтрующие контролы обеспечиват подстановку параметров. Для табличных функций фильтрующие контролы обеспечиват подстановку параметров или куски WHERE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2010, 13:33 |
|
||
|
Ищу стандартный подход/паттерн (SQL + фильтры)
|
|||
|---|---|---|---|
|
#18+
belykhПочему TFrame? Я имел в виду, подход, который упростит формирование фильтра для SELECT ну да, я уже понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2010, 13:35 |
|
||
|
Ищу стандартный подход/паттерн (SQL + фильтры)
|
|||
|---|---|---|---|
|
#18+
iscrafm поищите в инете, был раньше PuterSoft SDK. Видел уже похожую реализацию - встречается довольно часто. Как я понял, можно неограниченно увеличивать сложность фильтра (динамически добавляя всё новые условия). Плюсы - возможность создавать гибкие и разнообразные фильтры Минусы - малая скорость взаимодействия с пользователем Сейчас уже реализованный интерфейс (куча этитов и комбобоксов) и сотрудники к нему привыкли. Программист-ЛюбительМогу поделиться идеей реализации. При разработке приложения оказалось, что подавляющее большинство контролов, задающих условия выбора, являются комбобоксами и списками. Т.е. экозитка типа групп опшионов с эдитами около некоторых оказалась не востребована. Вернее там, где она есть, сделана конкретная кодировка "в лоб". А вот все остальное привелось к следующему виду: 1. Имеется словарь пользовательских источников данных - VIEW, табличные FUNC, процедуры PROC 2. Имеется реестр пользовательских форм разных видов * вложенный грид * карточка (содержит на вкладках вложенный грид с набором фильтрующие контролов, оределяющих WHERE его источника данных) * табличная форма (окно, содержащее грид с набором фильтрующие контролов, оределяющих WHERE его источника данных * структура с деревом слева и таблицей (для корневых узлов) либо карточкой (для обычных узлов) справа 3. Имеется реестр всех фильтрующих контролов - комбо и списков. Каждый контрол содержит баунд столбец, один или более столбцов для наглядного вывода и скрытый столбец условий, задающий кусочек WHERE, который будет использоваться для фильтрации источника, с которым будет связан фильтрующий контрол. Несколько фильтрующих контролов, связанных с одним и тем же источником в пределах пользовательской формы, соединяются через AND. Для процедур фильтрующие контролы обеспечиват подстановку параметров. Для табличных функций фильтрующие контролы обеспечиват подстановку параметров или куски WHERE. Надо обмозговать :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2010, 14:33 |
|
||
|
Ищу стандартный подход/паттерн (SQL + фильтры)
|
|||
|---|---|---|---|
|
#18+
belykhНадо обмозговать :)Это точно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2010, 14:58 |
|
||
|
Ищу стандартный подход/паттерн (SQL + фильтры)
|
|||
|---|---|---|---|
|
#18+
belykh, Алгеброй он называется. Если помните школьный курс маитематики то там были (a+b)^2 да и вся тригонометрия на этом построена. Пишете список фильтров. Пишете SQL-ные условия. Пишем возможные преобразования одно а другое. Сидим и потихоньку на бумажке упрощаем. ТеорКат. и прочию тяжелую математику уж не предлагаю. Пролог мог бы помочь, но тоже требует соответвующих знаний. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2010, 19:02 |
|
||
|
Ищу стандартный подход/паттерн (SQL + фильтры)
|
|||
|---|---|---|---|
|
#18+
belykhИмеется форма (много похожих форм) и панель фильтров. На панели располагаются эдиты, чекбоксы, комбобоксы, радиокнопки и т.п. Совокупность заполнения этих контролов дает фильтр в условие "WHERE" SELECT-запроса. Плохо. Сразу отсекаются потребности умных пользователей. belykhПри чем, некоторые контролы имеют приоритет (если заполнен, то другие контролы игнорируются) Просто кошмар. Надеюсь, они хоть визуально дисейблятся. belykhИнструмент разработки - C++ Builder. Поэтому проектирование превратилось в анти-паттерн "Магическая кнопка". Он инструмента тут ничего не зависит. belykhСуществует ли готовое решение или паттерн для подобного хозяйства? Именно для такого - инструмента не встречал. Стандартные решения фильтров обычно делаются на основе QBE или expression builder. Паттерн - в любом случае начать следует с того, что отделить "формирователь фильтров", "условие фильтрации" и GUI, который эти условия формирует. То есть, к примеру, желание изменить интерфейс с "панель с кучей всего" на "листбокс фильтруемых полей и справа панелька с контролами для этого поля" не должно быть заметно для "собственно фильтров". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2010, 19:37 |
|
||
|
Ищу стандартный подход/паттерн (SQL + фильтры)
|
|||
|---|---|---|---|
|
#18+
softwarerПлохо. Сразу отсекаются потребности умных пользователей. В большей массе умные пользователи встречаются редко, поэтому делается под основную массу. softwarerПросто кошмар. Надеюсь, они хоть визуально дисейблятся. С визуализацией более или менее (приоритетные с жирным лейблом). Пользователи привыкли. Собственно, что дали - с тем и пришлось работать. Идея не моя - теперь приходится разгребать готовое. По началу я был в шоке от проекта. Коментариев ноль (абсолютно). Все имена контролов типа Edit1, ..., Edit105... Оформления кода просто не существует... softwarerПаттерн - в любом случае начать следует с того, что отделить "формирователь фильтров", "условие фильтрации" и GUI, который эти условия формирует. То есть, к примеру, желание изменить интерфейс с "панель с кучей всего" на "листбокс фильтруемых полей и справа панелька с контролами для этого поля" не должно быть заметно для "собственно фильтров". Так что от кучи контролов не уйти (на переделку сотни интерфейсов времени нет). -- Идея с алгеброй - супер! Вот отвертку по-больше найду и прикручу тригонометрию к SQL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2010, 06:13 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=36835002&tid=1343473]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
169ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 486ms |

| 0 / 0 |
