将变量转换为double时出错[Delphi XE + IBObjects 4.9.12]

时间:2011-01-24 11:35:47

标签: delphi firebird delphi-xe firebird2.1

我的配置:

德尔福XE
Firebird 2.1
IBObjects 4.9.12
Windows 7 64位

当我尝试将值设置为IBOQuery参数时,我得到一个异常(“无法将类型的变体(UnicodeString)转换为类型(Double)”)。

从IB_Components.pas中的TIB_Column.SetAsVariant过程引发异常(第42795行)。要创建这种情况,只需尝试将字符串传递给日期参数:

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

在过去的25天里,我正试图解决这种情况,但在IBO支持列表中我没有答案。
有人有想法吗?

1 个答案:

答案 0 :(得分:3)

IBObjects的架构正在将所有参数,字段等转换(在执行的时刻)为String或Variants。如果您的'mydate'参数是'DateTime'(数字)类型,那么您必须用相应的类型值填充它。用字符串填充'numeric'类型参数不是逻辑...

试试这个

myQuery.paramByName('mydate')。AsDateTime:= Now + 5; //与大卫的答案相同。

myQuery.paramByName( '指明MyDate')AsFloat:=现在+ 5; //或IncDay(现在,5)

最好的问候,
拉杜