将变体转换为双精度时出错 [ Delphi XE + IBObjects 4.9.12]
我的配置:
Delphi XE
火鸟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 支持列表中我没有得到答案。
有人有主意吗?
My configuration:
Delphi XE
Firebird 2.1
IBObjects 4.9.12
Windows 7 64bits
I get an exception when I try to set a value to a IBOQuery parameter ("Could not convert variant of type (UnicodeString) into type (Double)").
The exception is raised from TIB_Column.SetAsVariant procedure in IB_Components.pas (line 42795). To create this situation, just try to pass a string to a date parameter:
myQuery.paramByName('mydate').AsString := DateToStr(IncDay(Now,5));
During last 25 days I'm trying to solve this situation, but in IBO support list I've got no answers.
Someone have an idea?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
IBObjects 的架构正在将(在执行时)所有参数、字段等转换为字符串或变体。如果您的“mydate”参数是“DateTime”(数字)类型,那么您必须用对应的类型值填充它。用字符串填充“数字”类型参数不是逻辑...
试试这个
myQuery.paramByName('mydate').AsDateTime:= Now+5; //与大卫的答案相同。
或
myQuery.paramByName('mydate').AsFloat:=Now+5; //或 IncDay(Now,5)
致以诚挚的问候,
拉杜
IBObjects's architecture is converting(at a moment of execution) all parameters, fields, etc to String or Variants. If your 'mydate' parameter is 'DateTime'(numeric) type then you must fill it up with a corespondent type value. Is not logic to fill an 'numeric' type parameter with a string...
try this
myQuery.paramByName('mydate').AsDateTime:= Now+5; //is the same as David's answer.
or
myQuery.paramByName('mydate').AsFloat:=Now+5; //or IncDay(Now,5)
Best regards,
Radu