1

我正在使用 Access 2003 并有一个允许用户从各种过滤器中进行选择的表单,并且我使用 VBA 来更新基于这些过滤器的子表单的记录集(我在 VBA 中生成一条 SQL 语句)。这个子表单可以有重复的客户端 ID,现在我正在尝试获取一个唯一的客户端 ID 列表。

如果我有子表单的源 SQL,是否有任何简单的方法可以使用 VBA 查询唯一的客户端 ID?我想到了这些选项:

  • 将所有 id 写入临时表,然后查询该表(似乎需要更多的工作/资源)
  • 以某种方式将查询应用于 VBA 中的记录集对象(这可能吗?);我将记录集对象设置为等于 SQL 查询,然后尝试运行 a SELECT DISTINCT client_id FROM <the recordset object>,但我没有找到任何信息让我相信这是可能的
  • 根据原始查询生成一个新的 SQL 查询(我希望SELECT DISTINCT client_id FROM ('original select query text here')可以工作,但它在 FROM 语句中给了我一个语法错误
4

1 回答 1

2

瞄准第三种选择。如果您为子查询设置别名,这应该可以工作,并且'original select query text here'可以适合。

SELECT DISTINCT sub.client_id
FROM
    (
        'original select query text here'
    ) AS sub

如果 Access 仍然阻塞,请向我们展示您的'original select query text here'.

你对替代#1是对的......那是浪费。

备选方案 #2 是不可能的,因为 Access 不允许您使用记录集对象作为FROM源来运行查询。

于 2012-08-06T21:18:21.803 回答