Firebird Embedded не срабатывает условие WHERE a = 7.89

Access Violation, некорректное выполнение запросов или вызовов API, ошибки утилит командной строки, в общем все, что вам мешает работать

Модераторы: kdv, dimitr

Ответить
pawigor
Сообщения: 2
Зарегистрирован: 30 ноя 2010, 10:32

Firebird Embedded не срабатывает условие WHERE a = 7.89

Сообщение pawigor » 30 ноя 2010, 11:04

На компьютере Windows XP SP 3 (x86) установлен Firebird-2.5.0.26074. Разрабатывается приложение на Delphi 2010 (IBX), в котором выполняется примерно такого вида запрос:

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

UPDATE ttt SET b = 1 WHERE  a = 7.89 
.Если приложение работает через сервер, т.е. использует клиентскую библиотеку GDS32.dll 6.3.0.26074 из system32, то запрос отрабатывает как надо. А если рядом с приложением расположить embedded-версию GDS32.dll 2.5.0.26074 (переименованный fbembed.dll и прочие dll из архива), то запрос не отрабатывает на той же самой базе данных. Тип поля "a" DOUBLE PRECISION. IBExpert в значении поля показывает 7,89. Самое интересное, что если значение поля "а" равно 7.0 или 7.5, то запрос отрабатывает и в том и в другом случае.
Это бага или я что-то делаю не так?

kdv
Forum Admin
Сообщения: 6595
Зарегистрирован: 25 окт 2004, 18:07

Re: Firebird Embedded не срабатывает условие WHERE a = 7.8

Сообщение kdv » 30 ноя 2010, 21:58

воспроизводимый пример дайте. табличку с парой записей, и т.п. Клиентская библиотека, вообще-то, на текст запроса не влияет. Так что скорее всего Вы две разные базы попутали.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: Firebird Embedded не срабатывает условие WHERE a = 7.8

Сообщение hvlad » 30 ноя 2010, 22:24

Никогда
Нельзя
Сравнивать
double precision
Тем более на равенство

pawigor
Сообщения: 2
Зарегистрирован: 30 ноя 2010, 10:32

Re: Firebird Embedded не срабатывает условие WHERE a = 7.8

Сообщение pawigor » 01 дек 2010, 02:37

Спасибо за отклики. Кажется использование DECIMAL(15,4) вместо DOUBLE PRECISION должно исправить ситуацию.

hvlad
Разработчик Firebird
Сообщения: 1244
Зарегистрирован: 21 мар 2005, 10:48

Re: Firebird Embedded не срабатывает условие WHERE a = 7.8

Сообщение hvlad » 01 дек 2010, 02:50

pawigor писал(а):Кажется использование DECIMAL(15,4) вместо DOUBLE PRECISION должно исправить ситуацию.
Только в 3-ем диалекте

Ответить