2015-07-09 85 views
0

我已經在MS訪問中設置了一些查詢,從網絡上的MS SQL服務器獲取數據。當我從MS訪問運行它們時,查詢正常工作。但是,當通過Excel中的VBA(需要我的儀表板)觸發相同的查詢時,則表示ODBC連接失敗。我無法弄清楚這個過程中發生了什麼。下面的所有細節:從VBA連接到服務器失敗,但從Access工作

在MS Access ODBC連接字符串 - 在查詢中的Excel VBA中使用

ODBC;DRIVER=SQL Server;SERVER=xyz;UID=xyz_reader;PWD=xyzpassword;Network=DBMSSOCN;Address=xyz,1433 

連接字符串的屬性設置 - 這是用來觸發MS訪問ODBC查詢

strConnection = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & mydb.accdb 

錯誤,我得到

Run-time error '-2147467259 (80004005)': 
ODBC--connection to 'SQL Serverxyz' failed. 
+1

這對於卡住的情況非常有幫助 - http://www.connectionstrings.com/並且有許多不同的可用連接器和示例。 – Leptonator

回答

0

Excel的VBA連接是ADODB CON nection所以你需要添加一個參考工具>>引用然後添加「Microsoft ActiveX數據對象庫」 然後使用如下代碼

Dim strConn As ADODB.Connection 
Dim rs As ADODB.Recordset 
Set strConn = New ADODB.Connection 
Set rs = New ADODB.Recordset 
strConn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=True;Initial Catalog=YourDATABASE;Data Source=YourServer" 

strSQL = "Your Select statement」 

strConn.Open 
rs.Open strSQL, strConn 

現在,你必須在記錄設置你的價值觀。我希望這能解決你的問題。

+0

欣賞答案。然而,我的挑戰有點不同。我從我想要存儲在MS訪問文件中的本地表中的服務器拉一個大表。我無法連接到兩個數據庫(服務器和本地ms訪問)並複製數據而不保留中間副本。因此,爲了做到這一點,我在連接到服務器的MS訪問中設置了一個ODBC查詢(這與我提到的連接字符串正常工作)。那麼在ms訪問中有一個等價的空白表,我正在運行一個查詢從excel-vba「insert into local_table select * from odbc_query」,然後我得到錯誤 – dsauce

相關問題