Фильтр float по разности полей

Добрый день. Никак не могу разобраться с пользовательским фильтром.
Нам надо создать фильтр типа float, который бы сравнивал введенное пользователем значение и разность двух полей в таблице.
Создаю пользовательский фильтр дробного значения, выбираю там подзапрос testsubquery, в этом подзапросе в Select единственное поле - customSqlColumn где написана разность двух колонок.
Но не работает. Подскажите пожалуйста, как нужно? Не могу пользовательские фильтры никак переварить корректно в голове.

Нравится

3 комментария

я делал сложны пользовательские фильтры по такому принципу:
создать отдельный FilterSet(набор фильтров), в нем создать пользовательский фильтр по какому-нибудь соседнему с искомым признаку (например по названию сущности) и рядом включенный фильтр, отражающий вашу логику (в т.ч. и CustomSQL)

Во-первых, лучше бы описать полностью задачу, которая вам нужна, может быть тут предложат решение получше.
Но если вам надо сравнить введенное пользователем значение и разность двух полей в таблице. Тогда надо в sq надо создать параметр и фильтр типа CustomSQLFilter.
И в нем написать:

[Таблица].[Поле1] - [Таблица].[Поле2] сравнение :Параметр

где
Таблица - это таблица (например tbl_Offering)
Поле1 и Поле2 - поля в этой таблице
сравнение (>, <, = и т.д., смотря что нужно)
Параметр - параметр, в который не забудьте передать значение, введенное в поле

Кажется я понял, что я не так вас понял. Вам надо чтобы данный фильтр отражался в разделе на фильтрах? То да, надо создать customSqlColumn в sq, с текстом

ISNULL([Таблица].[Поле1], 0) - ISNULL([Таблица].[Поле2], 0)

И в датасете создать поле с дробным значением и присвоить ему это поле из sq, тогда фильтр автоматически появится по свойству поля в датасете "Поле фильтрации"

Показать все комментарии