请帮助我了解发生了什么。 假设Access数据库中有以下项目:
表 MyTable :IDLine
(自动增量字段),a
,b
(整数),并且有一行{{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构造的子查询。我做错了什么,我该如何解决这个问题?
答案 0 :(得分:0)
通过将参数的顺序更改为MinLine,然后更改IDLine,可以解决问题。谢谢你的答案。