【问题标题】:VCL SQL [Query parameters error]VCL SQL【查询参数错误】
【发布时间】:2010-01-22 07:38:32
【问题描述】:

C++Builder ADOQuery SQLServer

继续This questions line

将此选择与过程一起使用:

    SELECT
    C.Hint,
    CAST(CASE WHEN T2.ID_Param IS NULL THEN 1 ELSE 0 END as bit) AS Visi
FROM
    CfgListParIzm C
    LEFT JOIN
    (
    SELECT
        T.ID_Param
    FROM
        TbUserParam T
    WHERE
        T.ID_User = @ID_User
    ) T2 On T2.ID_Param = C.ID_ListParIzm
WHERE
    C.ID_ListGroupParIzm = @ID_ListGroupParIzm

代码:

AQ4->Close();
AQ4->Parameters->Items[1]->Value=(int)TS->Tabs->Objects[NewTab];
AQ4->Open();

错误:

List index of bounds (1)

但我只能在运行程序中看到此错误。 测试查询->网格激活正常(手动设置属性)

如果我这样做了

            AQ4->Close();
//        AQ4->Parameters->Items[1]->Value=(int)TS->Tabs->Objects[NewTab];
          AQ4->Open();

错误:

AQ4: Field 'Visi' not found

AQ4 SQL:

FlowClientHardQ  :ID_User, :ID_ListGroupParIzm

我对 DBGrid&Checkbox 的兼容性也很严格 (Source),但由于我的领域是正常的,我认为这不是问题,我在其他地方犯了一个错误......

【问题讨论】:

  • 我认为您不应该“按问题调试”!在我看来,你得到了stackoverflow.com/questions/2115546/sql-convertation-to-bool 的答案,现在你又遇到了另一个问题;接下来将是 F10 用于调试的下一行 :)
  • 不,请......你错了......因为同样的问题,我问了预览问题,我只是很难转换为 bool 可以帮助我,但它没有。所以现在我展示了主要的麻烦。只是不明白为什么我有 2 个参数并且一切正常,但是当启动程序 ShowMessage ( AQ4->Parameters->Count );显示 1 ...我的调试器也被一些 1337 个组件破坏>___
  • 尝试在AQ4->Parameters->Items[1]->Value=(int)TS->Tabs->Objects[NewTab];行之前分配SQL查询(查询,一旦分配,将被解析),然后尝试分配参数值。否则,清除参数,并按顺序分配两者
  • 如果可以的话,我建议你停止使用 C++ Builder。这只不过是一种痛苦——相信我,它糟透了。改用 Delphi,或改用“标准”工具,如 Microsoft 的 Java - 从长远来看,它会对您有所帮助。
  • 哦......我知道很多圣战的东西,但我认为 C# 更好。所以我已经分配了。我可以看到这两个参数。但是它们在运行时消失了,甚至消失了 Visi 输出字段。我真的不知道为什么。

标签: sql c++builder vcl


【解决方案1】:

不确定C++ builder,但在Delphi VCL中,输入参数应标记为:而不是@。

首先,在设计时将查询放入查询组件并检查参数属性。如果没有定义参数,请尝试更改 @ 为:

现在,您在这里提出的问题不止一个……所以,让我们一步一步来。

【讨论】:

  • 抱歉,这个问题已经解决了。谢谢你的兴趣。我只是不知道如何在没有答案的情况下将其标记为已解决
猜你喜欢
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多