Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 Группировка и домен D_BOOLEAN  [new]
Kirill Razuvaev
Member

Откуда: Ленинград
Сообщений: 1267
Добрый день!
На не совсем приятные грабли наткнулся. Есть таблица, в которой несколько полей могут принимать только логические значения. Поэтому в качестве домена для них указан D_BOOLEAN, поля на основе которого FiB'ы трактуют как логические. И в Grid'ах он отображаются соответственно, если выборка идет напрямую из таблицы или простого представления на основе таблицы.
Если же добавить в представление группировку (не затрагивающую эти поля агрегатными функциями), то теряются исходные типы полей и заменяются нечто из серии RDB$xxxx с типом INTEGER.
Попытки явно указать тип значения через cast желаемого результата не дают.

Почему так и ЧЯДНТ?
FB 2.5.7
5 окт 17, 11:51    [20844811]     Ответить | Цитировать Сообщить модератору
 Re: Группировка и домен D_BOOLEAN  [new]
Polesov
Member

Откуда:
Сообщений: 400
Kirill Razuvaev,

> домен D_BOOLEAN, поля на основе которого FiB'ы трактуют как логические

pFIBDataSet эмулирует тип boolean. Надо отключить опцию:
<MyFibDataSet>.PrepareOptions.psUseBooleanField := False;

Ну, или изменить имя домена так, что бы в его имени не было BOOLEAN или BOOL.

С уважением, Polesov.
5 окт 17, 22:11    [20846651]     Ответить | Цитировать Сообщить модератору
 Re: Группировка и домен D_BOOLEAN  [new]
dennis-r
Member

Откуда:
Сообщений: 204
Polesov
Ну, или изменить имя домена так, что бы в его имени не было BOOLEAN или BOOL.
ТС хочет прямо противоположного.
5 окт 17, 22:37    [20846721]     Ответить | Цитировать Сообщить модератору
 Re: Группировка и домен D_BOOLEAN  [new]
dennis-r
Member

Откуда:
Сообщений: 204
Kirill Razuvaev
Если же добавить в представление группировку (не затрагивающую эти поля агрегатными функциями), то теряются исходные типы полей и заменяются нечто из серии RDB$xxxx с типом INTEGER.
Попытки явно указать тип значения через cast желаемого результата не дают.

Почему так и ЧЯДНТ?
FB 2.5.7
Выбор большой:
1. Взять 3.0 с натуральным булевым типом.
2. Остаться на 2.5, но допилить определение булевых полей в FIB'ах при использовании запросов (например, завести таблицу с описаниями полей для каждого нужного запроса).
5 окт 17, 22:50    [20846753]     Ответить | Цитировать Сообщить модератору
 Re: Группировка и домен D_BOOLEAN  [new]
Kirill Razuvaev
Member

Откуда: Ленинград
Сообщений: 1267
dennis-r
Kirill Razuvaev
Если же добавить в представление группировку (не затрагивающую эти поля агрегатными функциями), то теряются исходные типы полей и заменяются нечто из серии RDB$xxxx с типом INTEGER.
Попытки явно указать тип значения через cast желаемого результата не дают.

Почему так и ЧЯДНТ?
FB 2.5.7
Выбор большой:
1. Взять 3.0 с натуральным булевым типом.
2. Остаться на 2.5, но допилить определение булевых полей в FIB'ах при использовании запросов (например, завести таблицу с описаниями полей для каждого нужного запроса).

2. Дело-то, вообще говоря, не в FiB'ах. Не ясно, почему в "простом" представлении FB сохраняет исходные типы (домены) полей, а при группировке утрачивает их, хотя поля не используются в агрегатных функциях, и следовательно, их размер не может меняться при выполнении группировки.
6 окт 17, 10:23    [20847302]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить