【发布时间】:2023-04-07 13:14:02
【问题描述】:
我需要一些关于 SELECT TOP 查询的帮助,以及用 VBA 编写代码还是继续使用 SQL 是否更容易。
我有一个表 (StockSheet),它有 17 列和 +500 多条记录,查询的唯一相关字段是 Pallet Id 和 Inv Code。
我还创建了 3 个表单来将查询显示为子表单。
第一个查询(LoadSpec1Qry)如下:
SELECT TOP 20 StockSheet.*
FROM StockSheet
WHERE (((StockSheet.[Inv Code])="AG"))
ORDER BY [Pallet Id];
第二个查询(LoadSpec2Qry):
SELECT TOP 20 *
FROM (SELECT TOP 40 * FROM StockSheet WHERE (((StockSheet.[Inv Code])="AG")) ORDER BY [Pallet Id]) AS t
WHERE (((t.StockSheet.[Inv Code])="AG"))
ORDER BY t.[Pallet Id] DESC;
第三个查询(LoadSpec3Qry):
SELECT TOP 20 *
FROM (SELECT TOP 60 * FROM StockSheet WHERE (((StockSheet.[Inv Code])="AG")) ORDER BY [Pallet Id] DESC) AS t
WHERE (((t.StockSheet.[Inv Code])="AG"))
ORDER BY t.[Pallet Id] DESC;
总结:在表格 1 中它将显示前 20 条记录 (LoadSpec1Qry),其中 Inv_Code = "AG",在表格 2 (LoadSpec2Qry) 中将显示记录 21-40,在表格 3 (LoadSpec3Qry) 中将显示记录41-60。
我遇到的问题是:如果有 52 条记录,其中 Inv Code = "AG",LoadSpec3Qry 将显示记录 33-52。我试图得到的结果是 LoadSpec3Qry 显示记录 41-52。
有没有一种方法可以让 SQL 确定 Inv 代码有 X 条记录并显示每个查询的正确记录数?
请告知我是否应该使用 VBA 而不是 SQL 来解决这个问题,或者是否有人需要更多信息/屏幕截图或关于该问题的更好解释。
问候, 布伦登
【问题讨论】: