我的配置:
德尔福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支持列表中我没有答案。
有人有想法吗?
答案 0 :(得分:3)
IBObjects的架构正在将所有参数,字段等转换(在执行的时刻)为String或Variants。如果您的'mydate'参数是'DateTime'(数字)类型,那么您必须用相应的类型值填充它。用字符串填充'numeric'类型参数不是逻辑...
试试这个
myQuery.paramByName('mydate')。AsDateTime:= Now + 5; //与大卫的答案相同。
或
myQuery.paramByName( '指明MyDate')AsFloat:=现在+ 5; //或IncDay(现在,5)
最好的问候,
拉杜