2009-04-21 51 views
1

我正在使用Access 2007通過ODBC連接到MS SQL數據庫。 我有一個名爲「基地」它看起來像這樣的表:在Access VBA中可以使用此查找方法嗎?

Name  ID  Site 
-------------------- 
Home  1  111 
Work  2  111 
Car  3  111 
Castle 4  111 
Store  1  222 
Rest  2  222 

現在棘手的問題是,這個表就知道只有一部分是網站。
我知道我可以做DLookup並獲得第一個記錄(Home,1)並將它們存儲在變量中。
但我需要以某種方式獲得下一個記錄(工作,2),並將其存儲在其他變量,然後循環表中,直到我有每個記錄,而網站是111,存儲在變量。
任何想法? 這樣做的目的是將這些返回值保存爲字符串,並最終將它們放入複雜的查詢中。

+1

您的方法聽起來不對,即程序時你應該尋找一個基於集合的解決方案。通過遍歷結果集,在內存中添加值並將其插入到第二個查詢中,您試圖告訴優化程序如何完成這項工作。更好的做法是在一個查詢中完成整個任務(雖然對於您來說是一個複雜的任務,但相信優化器)。實際上,這聽起來像是在嘗試重新創建INNER JOIN :) – onedaywhen 2009-04-22 07:48:14

回答

4

我有點生疏,但你應該可以做一個類似的查詢。

SELECT * FROM Bases WHERE Site = 111 

回到這一個記錄集,然後只需通過記錄集將項目添加到存儲和將來使用的陣列,這取決於你所需要的循環。

如果你不熟悉記錄集,看看at this article

+2

要從記錄集加載數組,請考慮使用記錄集的GetRows()方法。這個鏈接有一個明確的描述如何做到這一點: http://www.apluskb.com/scripts/How_can_I_convert_a_answer391.html – HansUp 2009-04-21 23:38:45

0

As onedaywhen在我之前說過,循環結果集來構造第二個查詢並不是最佳解決方案。

我不知道第二個(複雜)查詢是怎麼樣的,但是你不能這樣做嗎?

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