2010-01-22 269 views
2

C++生成器ADOQuery SQLServer的VCL SQL [查询参数错误]

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 &复选框兼容性(Source)但我的领域是正常的位,我认为这并不麻烦,我在其他地方犯了一个错误...

+0

我不认为你应该“按问题调试”! 对我来说,你有一个答案http://stackoverflow.com/questions/2115546/sql-convertation-to-bool现在你有另一个问题;接下来将是F10为下一行调试:) – Liao 2010-01-22 07:46:06

+0

不,请你...你错了...我问预览问题,因为同样的问题,我只是艰难的转换为布尔可以帮助我,但它没有。所以现在我展示了主要的麻烦。只是不明白为什么我有2个参数,所有的作品都是正确的,但是当启动程序ShowMessage(AQ4-> Parameters-> Count);显示1 ...我的调试器也被一些1337组件破坏> ___ < – Cynede 2010-01-22 07:59:53

+0

尝试在行AQ4-> Parameters-> Items [1] - > Value =(int)TS-> Tabs->对象[NewTab];' (查询,一旦分配,将被解析),然后尝试分配参数值。否则,清除参数,并分配两个,按顺序 – Liao 2010-01-22 08:20:16

回答

1

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

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

现在,您在这里提出了多个问题......所以,让我们一步一步来。

+0

对不起,这个问题已经解决了。感谢您的关注。我只是不知道如何将它解决而没有答案 – Cynede 2010-01-29 05:18:10