1

请帮助我了解正在发生的事情。假设 Access 数据库中有以下项目:

table MyTable : IDLine(自增字段), a, b(整数), 这个表中有一行IDLine = 4

查询MyQuery

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

- 即一个查询MyTable的一些统计数据,并使用参数选择一些行。

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

SELECT *
FROM MyQuery
WHERE IDLine = :IDLine;

程序如下:

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

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

如果我将 ADOQuery1 的文本更改为

SELECT *
FROM MyQuery
WHERE IDLine = 4;

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

4

1 回答 1

0

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

于 2014-07-09T12:20:38.807 回答