2012-03-16 93 views
14

這不是一個關於哪個更好的問題,而是關於它們爲什麼在功能上有所不同的問題。我遇到的問題已經解決,但我很好奇爲什麼會發生這種行爲。ADO和DAO之間的區別

背景 - 使用Excel vba從Access數據庫中提取數據。當用戶單擊一個按鈕時,一個記錄集將從Access中提取出來,並將各種數據填充到電子表格中。然後,從另一個查詢中提取另一個記錄集以填充電子表格的另一部分。

ADO做了什麼 - ADO非常適合我的第一個記錄集。但是,我的第二個記錄集轉到Access中的查詢中,運行,並且不返回任何行。如果我在Access中運行這個查詢,它會打開(大約3到4秒後)。這個查詢有多個連接,計算項目,限制和可能的聯合查詢(我嘗試了許多不同的方式,有/沒有聯合等)。我嘗試關閉並重新打開ado連接。我試着改變超時值,我甚至使用ADO命令測試了對這些數據的Make表查詢,然後從表中取出(這種方式有效,但不是最好的情況,因爲數據不斷變化,而且我不希望每次有人使用此工具時都要運行make table查詢)。

所以,我改變了第二個數據拉到DAO,你看,它的工作原理。第一個數據是ADO(我通常更喜歡使用),但現在考慮將其更改爲DAO,因爲我寧願在代碼中使用一種數據訪問方法。

那麼,有人可以向我解釋爲什麼ADO不會在一個情況下拉數據,但DAO會?再次,這純粹是爲了信息的目的。

+1

在看不到代碼的情況下很難評論,但它可能是cusrsor類型/記錄集類型問題。你是否依賴代碼中的默認值?如果您只使用Access,那麼DAO是一個更好的選擇,因爲它是Access原生的,並提供比ADO更多的控制 – SWa 2012-03-16 12:31:11

+2

在哪裏使用通配符?這是一個常見問題,對於ADO而言,通配符是%,而DAO是(通常)*。 – Fionnuala 2012-03-16 13:49:17

+0

@Remou,我很熟悉兩者之間通配符的區別,但不幸的是我不在查詢中使用它們。 – APrough 2012-03-16 14:33:32

回答

11

DAO是Jet(Ms-Access)數據表的本地數據訪問方法。 ADO「Active X數據對象」與幾乎所有類型的數據庫都是行業友好的連接。

對於標準查詢,在這種情況下沒有理由爲什麼ADO應該不返回DAO所做的記錄,我懷疑這是查詢還必須包含與Access數據庫中的項有關的參數。如果是這種情況,那麼ADO將無法工作,因爲它不會使用所述參數,因爲它只是Excel的外部參考,使用DAO方法將觸發Access來運行查詢而不是Excel,因此它將會能夠訪問它自己的參數/參考。

+1

+1 DAO是比ADO更好的選擇Access – SWa 2012-03-16 13:32:05

+0

@Matt Donnan - 參數不應該是一個問題;這兩個查詢都使用它們,在我將它更改爲表格後,它仍然使用它們。查詢過程需要很長時間或其他情況時,必須有其他內容。但是,我喜歡你的評論「使用DAO方法將觸發Access運行查詢而不是Excel,因此它將能夠訪問它自己的參數/引用」。也許ADO有Excel試圖處理查詢,它在那裏迷路了? – APrough 2012-03-16 14:39:07

+0

@creamyegg和凱爾。我同意DAO可能是更好的選擇,但我通常對SQL Server使用ADO,加上我的習慣很難,在大多數情況下使用ADO都沒有問題,直到遇到像這樣的問題:P哦,需要根深蒂固我從現在開始使用DAO(在這些類型的項目中)。 – APrough 2012-03-16 14:45:15

3

我覺得這個問題已經很好的回答了,但是我想爲DAO和ADO比較添加另一個很好的(雖然有點難找)資源。它主要針對使用Access表單和報表的Access應用程序,但這裏的大部分信息都適用於使用Excel編寫的解決方案。

UtterAccess Wiki Article: Choosing between ADO and ADO

1

在Visual Basic中,三種數據訪問接口提供給您:ActiveX數據對象(ADO),遠程數據對象(RDO)和數據訪問對象(DAO)。數據訪問接口是一種對象模型,它表示訪問數據的各個方面。使用Visual Basic,您可以通過編程方式控制連接,語句構建器和返回的數據以供任何應用程序使用。

爲什麼Visual Basic中有三個數據訪問接口?數據訪問技術在不斷髮展,三個接口中的每一個都代表着不同的技術水平。最新的是ADO,它具有比RDO或DAO更簡單但更靈活的對象模型。對於新項目,您應該使用ADO作爲您的數據訪問界面。

+0

閱讀ADO不再處於積極發展狀態 鏈接:http://www.utteraccess.com/維基/的index.php/Choosing_between_DAO_and_ADO – 2016-02-29 06:37:21