繁体   English   中英

Microsoft Access查询

[英]Microsoft Access Query

我有一个设置表,该表存储使用Microsoft Access构建的应用程序的不同设置键设置键之一驱动下拉列表中应显示多少记录该列表后面的查询与以下查询类似:

Select Top 3 id, name FROM tblRegular

现在,我想实现以下目标:

Select Top (Select keyValue FROM tblSettings WHERE key="rowNumber") id, name FROM tblRegular

但是,像这样使用它不起作用,因为它会引发错误。有人可以告诉我是否可以做到这一点?

编辑:表结构看起来类似于下面的结构:tblRegular:

id  | name
1     'A'
2     'B'
3     'C'

tblSettings:

id  | key          | keyValue
1     'rowNumber'    2

谢谢!

考虑使用相关子查询来计算rowCount的纯SQL解决方案,然后在外部查询中使用rowCount按行数进行过滤:

SELECT main.id, main.[name]
FROM
   (SELECT t.id, t.[name],
          (SELECT Count(*) FROM tblRegular sub 
           WHERE sub.[name] <= t.[name]) AS rowCount
    FROM tblRegular t) AS main
WHERE main.rowCount <= (SELECT Max(s.keyValue) FROM tblSettings s 
                        WHERE s.key = 'rowNumber')

或者使用域聚合DMax()

SELECT main.id, main.[name]
FROM
   (SELECT t.id, t.[name],
          (SELECT Count(*) FROM tblRegular sub 
           WHERE sub.[name] <= t.[name]) AS rowCount
    FROM tblRegular t) AS main
WHERE main.rowCount <= DMax("keyValue", "tblSettings", "key = 'rowNumber'")

此语法在Access SQL中确实失败,并用(localized)消息吠叫“ Select”,例如:

SELECT句子包含一个保留的单词或参数,该单词或参数拼写错误或丢失,或者标点符号不正确。

好的,所以,发现使用问题中的Select语句将触发所提到的错误。 因此,有效的方法是更改​​表单加载下拉列表的.RowSource,并且放置在rowsource中的查询应类似于:

Select Top (" & rowNr & ") id, name FROM tblRegular

使用另一个SQL查询甚至DAO / ADO函数获取rowNr以便从数据库中检索值

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM