Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 FDQuery.Filter  [new]
alekcvp
Member

Откуда:
Сообщений: 2084
Если к SQL-серверу послать запрос вида
SELECT * FROM TABLE WHERE SomeField <> 0;
то он не вернёт записи, для которых SomeField IS NULL.

А вот если сделать
FDQuery.Filter := 'SomeField <> 0';
то он эти записи покажет.

Вопрос: можно ли как-то сделать, чтобы FDQuery.Filter работал так же как и WHERE?..
15 май 20, 22:40    [22134003]     Ответить | Цитировать Сообщить модератору
 Re: FDQuery.Filter  [new]
Dmitry Arefiev
Member

Откуда:
Сообщений: 9846
Нельзя, все БД разные, а FD один и работает на клиенте. Ну или можно, но нужно ?
15 май 20, 22:54    [22134005]     Ответить | Цитировать Сообщить модератору
 Re: FDQuery.Filter  [new]
alekcvp
Member

Откуда:
Сообщений: 2084
Dmitry Arefiev
Нельзя, все БД разные, а FD один и работает на клиенте. Ну или можно, но нужно ?

Т.е. правило что результат сравнения null = 0 является null - это не стандарт SQL?..
15 май 20, 23:24    [22134012]     Ответить | Цитировать Сообщить модератору
 Re: FDQuery.Filter  [new]
Vlad F
Member

Откуда:
Сообщений: 1283
alekcvp,

А если прямо в строку фильтра и подписать желаемое?
15 май 20, 23:39    [22134017]     Ответить | Цитировать Сообщить модератору
 Re: FDQuery.Filter  [new]
alekcvp
Member

Откуда:
Сообщений: 2084
Vlad F
alekcvp,
А если прямо в строку фильтра и подписать желаемое?

В смысле? 'AND SomeField IS NOT NULL' что-ли?
Я просто хотел чтобы фильтр в компоненте и фильтр в запросе одинаково отрабатывали...
16 май 20, 00:19    [22134031]     Ответить | Цитировать Сообщить модератору
 Re: FDQuery.Filter  [new]
Vlad F
Member

Откуда:
Сообщений: 1283
alekcvp,

Но ты же уже понял, что движок сервера и движок локального фильтра имеют разную реализацию данного фукционала.
Не хочешь разбираться с дополнительными возможностями второго, окостыль прямо в запросе:
select coalesce(SomeField, 0) <....>.

Сообщение было отредактировано: 16 май 20, 00:34
16 май 20, 00:27    [22134036]     Ответить | Цитировать Сообщить модератору
 Re: FDQuery.Filter  [new]
alekcvp
Member

Откуда:
Сообщений: 2084
Vlad F
alekcvp,
Но ты же уже понял, что движок сервера и движок локального фильтра имеют разную реализацию данного фукционала.
Не хочешь разбираться с дополнительными возможностями второго, окостыль прямо в запросе:
select coalesce(SomeField, 0) <....>.
Coalesce влияет на вид возвращаемых данных, а это не правильно. На данный момент я решил просто к каждому условию для фильтра типа 'SomeField <> 0' принудительно дописывать ' AND SomeField IS NOT NULL', на результаты от SQL-сервера это всё равно не влияет, а фильтр в компоненте начинает работать как ожидается.
16 май 20, 22:55    [22134366]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить