powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Сложный фильтр
12 сообщений из 12, страница 1 из 1
Сложный фильтр
    #32117623
Lisichkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день!
Подскажите пожалуйста, как организовать сложный фильтр в ADO:

Для компонента ADODataSet
параметр Filter := ‘[ID] IN (SELECT [FROM_ID] FROM TVINFO.PAYMENTS WHERE FROMS='2' AND CONTRAGENT_ID=163)’

Когда я устанавливаю параметр Filtered := True
Возникает ошибка ‘Arguments are of the wrong type, or out of acceptable range, or are in conflict with one another’

Возможно ли фильтрование в ADO через подзапрос?
Как решить данную проблему?
...
Рейтинг: 0 / 0
Сложный фильтр
    #32117632
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Возможно ли фильтрование в ADO через подзапрос?

Тыж сам себе ответил, через подзапрос, а запросы кто выполняет, правильно, сервер. Так вперед.

Ну или строй строку IN (...) сам.
...
Рейтинг: 0 / 0
Сложный фильтр
    #32117648
Lisichkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хорошо, ADODataSet имеет сложный запрос (условие WHERE), далее пользователь хочет отфильтровать записи (увидеть в гриде) только по определенному критерию. Если я изменю в ADODataSet параметр CommandText – добавлю туда дополнительное условие WHERE – сработает ( только тяжело складывать условия когда есть ключевое слове ORDER BY :( ), но когда пользователь решит отменить фильтр – надо восстанавливать исходное SQL выражение – логика программы сложная и хреновая – через фильтр было бы пороше (если это возможно).
...
Рейтинг: 0 / 0
Сложный фильтр
    #32117670
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит нужно простые фильтры использовать - для чего бы это на клиенте фильтровать по IN ???
...
Рейтинг: 0 / 0
Сложный фильтр
    #32117680
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>логика программы сложная и хреновая

В большинстве случаев это вырастает из неправильной структуры хранения данных.
...
Рейтинг: 0 / 0
Сложный фильтр
    #32117856
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Filter накладывает условия на уже полученные данные без какого либо обращения к БД. Поэтому условия в нем должны быть простые типа <имя поля><операция сравнения><константа> AND/OR ...
...
Рейтинг: 0 / 0
Сложный фильтр
    #32118028
Lisichkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переформулирую запрос: возможен ли фильтр следующего формата –
<ИМЯ ПОЛЯ> IN (SELECT … FROM …).

Почему, я так упорно хочу реализовать это через фильтр: В процессе авторизации пользователя в зависимости от прав пользователя сервер MS SQL генерирует SQL выражение ограничивающее данные доступные пользователю (через ограничение фразы WHERE).
В процессе работы пользователю требуется временная фильтрация по определенным параметрам, после чего фильтр удаляется (почему-то некоторым пользователям не нравиться поиск – им подавай фильтр :( ).

Я реализовал фильтр типа <ИМЯ ПОЛЯ> IN (SELECT … FROM …) через включение данного выражения в тело SQL запроса, но мне это решение кажется тяжеловесным: вводится новые переменные и усложняется логика программы.
Поэтому задам вопрос по другому: принципиально это возможно или нет?

С уважением, Александр.
...
Рейтинг: 0 / 0
Сложный фильтр
    #32118057
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тебеж написали, что локально нет.

В процессе авторизации пользователя в зависимости от прав пользователя сервер MS SQL генерирует SQL выражение ограничивающее данные доступные пользователю (через ограничение фразы WHERE).

Это вот как понимать, кто и что генерит. Обычно такие вещи делаются через таблицы прав доступа и представления.

А вот про логику давай побеседуем. Как визуально то реализовать фильтрацию IN. Ну тоесть как это выглядеть должно. Ну нарастающий фильтр по нескольким полям это я еще понимаю. А у тебя что?
...
Рейтинг: 0 / 0
Сложный фильтр
    #32118084
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, я вот тоже не понял - чего он там фильтрует, при чем тут права?
...
Рейтинг: 0 / 0
Сложный фильтр
    #32118109
Lisichkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеются права пользователя не на таблицы, а на записи в таблице.

Имеется таблица прав и пользователей.

Фильтр - «Помощник» для пользователя по поиску нужной информации среди данных уже ограниченных сервером.
...
Рейтинг: 0 / 0
Сложный фильтр
    #32118153
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А при чем тут фильтр IN (select * from) ???

Откуда ты собрался select делать? Что, пользователь сам таблицу для этого создает?

Ну и что, что права на запись - добавить лишние условия не проблема
...
Рейтинг: 0 / 0
Сложный фильтр
    #32118160
pkarklin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Так ты и не понял, что я у тебя спрашивал.

Пусть имеем журнал документов с полями Дата Документа, Дата проводки, Тип документа, Вид операции, Контрагент, Договор, Сумма. У меня реализовано два вида фильтра, фильтр по выделенному и нарастающий фильтр. Смысл работы первого понятен. Юзер встает на поле, щелкает на кнопке тулбара и ему отфильтровываются записи по значению выделенного поля. Нарастающий фильтр позволяет юзеру отфильтровать данные по сложному фильтру, например за конкретную дату для конкретного типа документа по конкретному договору. Т.Е. пользователь встает в одно поле щелк - есть условие, второе поле щелк, еще условие и т.д. Отмена фильтра идет в обратном порядке, хотя есть возможность и сразу снять все условия фильтрации. В принципе, юзер также может нафильтровать и по нескольким значениям в одном поле. Только делаю я это ни черезе IN, а через AND ()...

А тебе то что надо сделать.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Сложный фильтр
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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