4

我的配置:

Delphi 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 支持列表中我没有得到任何答案。
有人有想法吗?

4

1 回答 1

3

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

尝试这个

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

或者

myQuery.paramByName('mydate').AsFloat:=Now+5; //或 IncDay(Now,5)

最好的问候,
拉杜

于 2011-01-24T11:52:12.547 回答