Ошибка при преобразовании варианта в двойной [Delphi XE + IBObjects 4.9.12] - PullRequest
4 голосов
/ 24 января 2011

Моя конфигурация:

Delphi XE
Жар-птица 2.1
IBObjects 4.9.12
Windows 7 64 бит

Я получаю исключение при попытке установить значение для параметра IBOQuery («Не удалось преобразовать вариант типа (UnicodeString) в тип (Double)»).

Исключение возникает из процедуры TIB_Column.SetAsVariant в IB_Components.pas (строка 42795). Чтобы создать такую ​​ситуацию, просто попробуйте передать строку в параметр даты:

myQuery.paramByName('mydate').AsString := DateToStr(IncDay(Now,5));

В течение последних 25 дней я пытаюсь разрешить эту ситуацию, но в списке поддержки IBO у меня нет ответов.
У кого-нибудь есть идея?

1 Ответ

3 голосов
/ 24 января 2011

Архитектура IBObjects преобразует (в момент выполнения) все параметры, поля и т. Д. В строку или варианты.Если ваш параметр mydate имеет тип DateTime (числовой), вы должны заполнить его значением типа corespondent.Не логично заполнять параметр типа 'numeric' строкой ...

попробуйте

myQuery.paramByName ('mydate'). AsDateTime: = Now + 5;// совпадает с ответом Дэвида.

или

myQuery.paramByName ('mydate'). AsFloat: = Now + 5;// или IncDay (сейчас, 5)

С наилучшими пожеланиями,
Раду

...