IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.
Модератор: kdv
-
Pavel_ch
- Сообщения: 24
- Зарегистрирован: 09 мар 2006, 15:21
Сообщение
Pavel_ch » 30 сен 2006, 14:48
Вопрос по IBX 7.0.8 (IB 7.0.1)
Нужно добавить запись в таблицу, одно из значений которой имеет тип Boolean.
В IBQuery вписал запрос
Код: Выделить всё
insert into usr_names (usr_name, priv, admin) values (:usrname, :priv, :admin)
Поля priv и admin являются полями типа Boolean.
Передаю параметрам значения:
Код: Выделить всё
IBQuery1.Prepare;
....
IBQuery1.Params[2].AsBoolean:=True;
....
При попытке выполнить запрос вылетает исключение Arithmetic exception, string truncation or numeric overflow
Смотрю через SQLMonitor и вижу что вместо True параметру присваевается -1, а вместо False - 0. Это так и должно быть? Как с этим бороться?
Мне нужны именно поля типа Boolean - замена на Char(1) не подходит.
-
CyberMax
- Заслуженный разработчик
- Сообщения: 638
- Зарегистрирован: 31 янв 2006, 09:05
Сообщение
CyberMax » 30 сен 2006, 16:44
В IBX не реализована эмуляция Boolean-полей (но она есть в FIB+).
Для работы с логикой используй числовое присвоение и сравнение:
и
Код: Выделить всё
if IBQuery1.FieldByName('SomeName').AsInteger = 1 then
begin
end;
-
Pavel_ch
- Сообщения: 24
- Зарегистрирован: 09 мар 2006, 15:21
Сообщение
Pavel_ch » 30 сен 2006, 17:12
Не думал что всё так плохо с IBX....
И тем не менее, спасибо за разъяснение ситуации!