Delphi,MS Access,ADO:“对带参数的查询的查询”没有给出正确的结果

时间:2014-07-07 13:33:48

标签: delphi ms-access ado tadoquery

请帮助我了解发生了什么。 假设Access数据库中有以下项目:

MyTable IDLine(自动增量字段),ab(整数),并且有一行{{1}在这张表中。

查询 MyQuery

IDLine = 4

- 即计算 MyTable 的某些统计信息的查询,并使用参数选择一些行。

然后在Delphi中创建了一个TADOQuery:

 SELECT IDLine, a+b AS Sum
 FROM MyTable
 WHERE IDLine >= :MinLine;

,程序如下:

SELECT *
FROM MyQuery
WHERE IDLine = :IDLine;

由于某种原因,消息给出0,但应该有1行。为什么会这样?

如果我将ADOQuery1的文本更改为

ADOQuery1.Close;
ADOQuery1.Parameters.ParamByName('MinLine').Value := 2;
ADOQuery1.Parameters.ParamByName('IDLine').Value := 4;
ADOQuery1.Open;
ShowMessage(IntToStr(ADOQuery1.RecordCount));

消息给出1。 此外,如果我从Access中的 MyQuery 中删除最后一行(带有SELECT * FROM MyQuery WHERE IDLine = 4; 参数),该消息也会给出正确的结果 - 这是否意味着问题以某种方式与参数相关联?但我无法摆脱 MyQuery 中的MinLine参数,实际上这只是INSERT-INTO构造的子查询。我做错了什么,我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

通过将参数的顺序更改为MinLine,然后更改IDLine,可以解决问题。谢谢你的答案。