请帮助我了解正在发生的事情。假设 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