Страница 1 из 1

IBQuery неправильно работает с Boolean?

Добавлено: 30 сен 2006, 14:48
Pavel_ch
Вопрос по 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) не подходит.

Добавлено: 30 сен 2006, 16:44
CyberMax
В IBX не реализована эмуляция Boolean-полей (но она есть в FIB+).
Для работы с логикой используй числовое присвоение и сравнение:

Код: Выделить всё

IBQuery1.Params[2].AsInteger := 1;
и

Код: Выделить всё

if IBQuery1.FieldByName('SomeName').AsInteger = 1 then
begin
end;

Добавлено: 30 сен 2006, 17:12
Pavel_ch
Не думал что всё так плохо с IBX....
И тем не менее, спасибо за разъяснение ситуации!