Ms access 在Access VBA中是否可以使用此查找方法?

Ms access 在Access VBA中是否可以使用此查找方法?,ms-access,vba,ms-access-2007,lookup,Ms Access,Vba,Ms Access 2007,Lookup,我正在使用Access 2007通过ODBC连接到MS SQL数据库。 我有一张叫做“bases”的表,它看起来像这样: Name ID Site -------------------- Home 1 111 Work 2 111 Car 3 111 Castle 4 111 Store 1 222 Rest 2 222 现在棘手的是,这个表中唯一知道的部分是站

我正在使用Access 2007通过ODBC连接到MS SQL数据库。 我有一张叫做“bases”的表,它看起来像这样:

Name     ID     Site
--------------------
Home      1      111
Work      2      111
Car       3      111
Castle    4      111
Store     1      222
Rest      2      222
现在棘手的是,这个表中唯一知道的部分是站点。
我知道我可以做一个DLookup,得到第一条记录(Home,1)并将其存储在变量中。
但我需要以某种方式获取下一条记录(Work,2),并将其存储在其他变量中,然后循环遍历该表,直到在站点为111时,将所有记录都存储在变量中。
有什么想法吗?
这样做的目的是将这些返回值保存为字符串,并最终将它们放入复杂的查询中

我有点生疏了,但你应该可以像这样进行查询

SELECT * FROM Bases WHERE Site = 111
将其返回到记录集,然后根据需要在记录集中循环添加项以供存储和将来使用


如果您不熟悉记录集,请看一看。

我有点生疏,但您应该能够像这样进行查询

SELECT * FROM Bases WHERE Site = 111
将其返回到记录集,然后根据需要在记录集中循环添加项以供存储和将来使用

如果您不熟悉记录集,请看一看。

正如有一天在我前面所说的,循环通过结果集构造第二个查询不是最佳解决方案

我不知道第二个(复杂的)查询是什么样子的,但是你不能这样做吗

select * from OtherTable 
where Name in 
(
    select Name from Bases where Site = 111
)
正如有一天在我之前所说的那样,循环通过resultset构造第二个查询并不是最佳解决方案

我不知道第二个(复杂的)查询是什么样子的,但是你不能这样做吗

select * from OtherTable 
where Name in 
(
    select Name from Bases where Site = 111
)

你的方法听起来是错误的,即当你应该寻找一个基于集合的解决方案时,你的方法是程序性的。通过在resultset中循环,将值存储在内存中,然后将它们插入到第二个查询中,您试图告诉优化器如何完成它的工作。最好在一个查询中完成全部工作(尽管对您来说是一个复杂的查询,但请相信优化器)。事实上,这听起来像是你在试图重新设计内部连接:)你的方法听起来是错误的,也就是说,当你应该寻找基于集合的解决方案时,你的方法是程序性的。通过在resultset中循环,将值存储在内存中,然后将它们插入到第二个查询中,您试图告诉优化器如何完成它的工作。最好在一个查询中完成全部工作(尽管对您来说是一个复杂的查询,但请相信优化器)。事实上,这听起来像是在试图重新设计内部连接:)