将变体转换为双精度时出错 [ Delphi XE + IBObjects 4.9.12]

发布于 2024-10-14 13:34:21 字数 413 浏览 1 评论 0原文

我的配置:

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

丶视觉 2024-10-21 13:34:21

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文