2014-10-29 82 views
0

我想在Excel中使用VBA查詢SQL數據庫,並且我給出了下面的代碼作爲起點,這很棒,但我不知道編寫連接字符串的語法和到目前爲止一直無法找到它。希望你們能幫助我。如何編寫連接字符串

Dim cn as new ADODB.Connection 
Dim rs as new ADODB.Recordset 

Cn.ConnectionString = 「your connection string」 
Cn.Open 
Rs.Open 「query like SELECT * FROM MYTABLE etc.」, cn 
Range(「A1」).CopyFromRecordset rs 

Rs.close 
Cn.close 
+2

如果你做一些谷歌上搜索我確定你會發現噸的例子 – Steve 2014-10-29 21:18:50

+1

[www.connectionstrings.com(http://www.connectionstrings.com/sql-server/)是一個良好的開端。就像這樣:'cn.ConnectionString =「Provider = SQLOLEDB.1; Data Source = ServerName; Initial Catalog = databaseName; TRUSTED_CONNECTION = YES」' – 2014-10-29 21:20:10

+0

我一直在過去兩週內一直在搜索Google,但還沒有找到我需要的東西對我的大腦有意義。然而,波特蘭亞軍提供的是非常有用的謝謝先生。現在我只需要弄清楚它爲什麼會給我一個編譯錯誤:第一行的用戶定義類型未定義錯誤Dim – 2014-10-29 21:36:24

回答

1

此代碼可以幫助你(這只是我手頭上有接近你想要做什麼,而不是你的一個重寫),但你的連接字符串會根據您的數據庫。有關字符串本身的語法的更多信息,請轉至here。您正在收到編譯錯誤,因爲您沒有正確的引用。在VBE中,轉到工具並選擇引用。確保選中ActiveX數據對象6.1庫。

Private Sub GetFieldNames() 

Set con1 = New ADODB.Connection 
Set rs1 = New ADODB.Recordset 
Dim ProjectName As String 
Dim ConCat As String 

con1.ConnectionString = "Provider=SQLOLEDB;Data Source=SERVERADDRESS;Initial Catalog=DATABSE;IntegratedSecurity=SSPI" 
con1.Open 

With rs1 
    .ActiveConnection = con1 
    .Open "SELECT column_name,* From information_schema.columns Where table_name = 'Projects' ORDER by ordinal_position" 
    Sheet1.Range("A1").CopyFromRecordset rs1 

    .Close 

End With 


con1.Close 
Set con1 = Nothing 

End Sub 
+0

我能夠修改代碼並添加引用,正如您所建議的,以便在此過程中獲得更多信息,但是現在我在嘗試打開連接字符串時發現無效授權規範錯誤時遇到了不同的問題。 – 2014-10-29 22:22:54

+1

這可能與'IntegratedSecurity = SSPI'部分有關。你需要弄清楚你如何連接到SQL Server數據庫。它是通過Windows身份驗證還是SQL Server身份驗證?然後你需要相應地改變你的連接字符串。關於連接字符串有很多信息。問一個具體的問題,我們可能會提供幫助。 – 2014-10-29 23:14:31

+0

我能夠得到它的工作我不得不將密碼添加到連接字符串(這是SQL Server身份驗證)我只是不認爲我需要的那部分,因爲連接文件excel使用嚮導時做的不會在該文件中有它,我正在使用該文件來幫助編寫代碼。 – 2014-11-01 20:21:50