【发布时间】:2010-01-22 07:38:32
【问题描述】:
C++Builder ADOQuery SQLServer
将此选择与过程一起使用:
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