Как организовать фильтрацию или выборку данных | |
---|---|
Baga Автор Сообщений: 540 Откуда: г. Махачкала Дата регистрации: 03.06.2006 |
Здравствуйте.
Есть форма [attachment 27038 ris1.JPG] На ней огромное количество условий отбора записей для грида, что наверху, или курсора. По типу мероприятия (ДВ1, ОПВ и т.д.)+Типу результата (подлежащие, спланированные и ит.д)+По кварталу+по возрасту. Где-то более 700 сочеаний... Запарился с CASE - ENDCASE IF - INDIF и запутался уже... Не подскажете какой-то более короткий метод фильтрации (по кнопке показать) или отбора записей (по кнопке Список)? ------------------ Багавудин Мирзаев |
Re: Как организовать фильтрацию или выборку данных | |
---|---|
Taran Сообщений: 13625 Откуда: Красноярск Дата регистрации: 16.01.2008 |
"Огромное" - это сильно сказано.
В чем проблема? Ну есть пяток параметров. Насколько понимаю все они независимые и объединяются в общее условие через AND. А каждое само по себе OR.
|
Re: Как организовать фильтрацию или выборку данных | |
---|---|
PaulWist Сообщений: 14621 Дата регистрации: 01.04.2004 |
Посмотри на "идею", на нынешний день в структуре данных и ХП есть изменения - это если заинтересует распишу по подробнее.
forum.foxclub.ru И в картинках forum.foxclub.ru forum.foxclub.ru ------------------ Есть многое на свете, друг Горацио... Что и не снилось нашим мудрецам. (В.Шекспир Гамлет) Исправлено 2 раз(а). Последнее : PaulWist, 16.02.17 11:33 |
Re: Как организовать фильтрацию или выборку данных | |
---|---|
Baga Автор Сообщений: 540 Откуда: г. Махачкала Дата регистрации: 03.06.2006 |
Спасибо. Это меня заинтересовало. Как раз данные у меня находятся на сервере SQL Ели распишете изменения, буду благодарен. ------------------ Багавудин Мирзаев |
Re: Как организовать фильтрацию или выборку данных | |
---|---|
Baga Автор Сообщений: 540 Откуда: г. Махачкала Дата регистрации: 03.06.2006 |
Это кому как, видимо. Если для Вас 720 возможных сочетаний условий отбора - это не проблема, то для меня 10 - уже проблема... Прямой запрос. В гриде на форме уже есть источник. Этот источник и нужно отфильтровать или выбрать из этого источника данные в курсор. Никаких связей. Разумеется, код фильтации зависит от выбранных пользователем условий выборки. И вот здесь, возможно потребуется некая связь источника со справочниками. Например справочником возрастных категорий. Например, если первый параметр ДВ1, второй Подлежащие, третий Все, четвертый - Взросслые, то
Написать сами коды отбора - не проблема, там нет сложных связей. Проблема вызвать нужный код в нужное время, с нужными входными (для кода) параметрами. ------------------ Багавудин Мирзаев |
Re: Как организовать фильтрацию или выборку данных | |
---|---|
Sawradym Сообщений: 2244 Откуда: Винница Дата регистрации: 15.05.2007 |
Я бы сделал примерно вот так:
Исправлено 2 раз(а). Последнее : Sawradym, 17.02.17 12:19 |
Re: Как организовать фильтрацию или выборку данных | |
---|---|
matod Сообщений: 3062 Откуда: Иркутск Дата регистрации: 31.10.2001 |
Зависит от степени навороченности условий и разнообразия их комбинации.
Простой уточняющий поиск - где для каждого поля есть свой фильтр, внешний вид которого зависит от типа поля и его назначения, а результирующее условие формируется простым объединением фильтров с помощью AND. То, что я вижу на картинке, так бы и сделал. Код формирования запроса выглядел бы как-то так:
где функции control_xxx скрывают в себе подробности построения условия по полю для текстового поля, даты, периода, выбора из списка и т.д. Если нужны условия на справочники, то при относительно небольших объемах сразу бы включил в выборку все связанные таблицы. Если нужно экономить - параллельно с формированием условия строил бы выражение для JOIN. Обычно этого достаточно. И не так уж сложно, даже если число сочетаний велико, т.к. разница только в количестве операндов в длинной строке AND...AND... Мои попытки сделать что-то более универсальное привели к созданию построителя запросов на основе табличек с мета-данными. Получился весьма сложный модуль, который, который для пользователей оказался проще, чем sql-язык, но все равно далеко не все могут им пользоваться. И, как правило, это я с помощью построителя строю запрос с параметрами, сохраняю его, а они выбирают из списка подходящий запрос и вводят параметры. Потому, что реальная работа ограничивает многообразие выражений. Ну и полной универсальности добиться, естественно, не удалось. Поэтому, некоторые запросы построить нельзя сделать в принципе. И тогда для них делается отдельная форма/отчет/запрос. |
Re: Как организовать фильтрацию или выборку данных | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Именно так! Это программист, по простоте душевной, считает что пользователю обязательно потребуется весь возможный диапазон условий - и начинает сооружать "построители запросов", или хитрые QBE/QBF формы (в принципе и то и другое сделать сравнительно несложно - вот пользоваться потом юзеру этим будет не очень удобно). А пользователь в 90% случаев нуждается в десятке (а то и меньше) совершенно конкретных запросов по 2, 3, максимум 4 критерия из возможной полусотни... Ну не нужно ему комбинировать одновременно пол, возраст, имя, место работы, семейный статус, отношение к религии, воинское звание и доход за прошлый год А тому 1% юзеров которым нужны МЕГА-сложные запросы... Ну для них полноценный "построитель" не сделать - придётся вручную писать запросы, или обучать пользователя SQL-ю. Вот как "построить визуально" запрос выбирающий "клиентов с доходом выше чем у 80% всех клиентов, но совершивших за текущий месяц покупок на сумму меньшую чем средняя ежемесячная сумма покупок одного клиента за прошедшие 3 месяца" ------------------ WBR, Igor |
Re: Как организовать фильтрацию или выборку данных | |
---|---|
matod Сообщений: 3062 Откуда: Иркутск Дата регистрации: 31.10.2001 |
Помниться, сколько-то времени назад мы про это с тобой уже спорили. Тогда идея универсального построителя мне казалась хорошей идеей Сейчас я скорее соглашусь с тобой. Хотя есть пользователи, которые освоили и пользуются. Другим больше нравится выгрузить в эксель и там колдовать. Третьи формулируют словами запросы, я им делаю, они только переменную часть вводят. А многие просто грустно вздыхают - "что-то мы так и не смогли разобраться" что тоже имеет свои преимущества - вроде как средство есть, они и не пристают ко мне, пока в выборке не появится действительно реальная необходимость, без которой никак. Ну и для быстрого внедрения тоже удобно - можно довольно много сформулировать. Но не всё.
вот, кстати, с агрегированными показателями у меня вообще никак. |
© 2000-2024 Fox Club  |