簡體   English   中英

如何使用VBA連接到SQL Server?

[英]How do I connect to SQL Server using VBA?

我想使用從SQL Server數據庫中提取的數據來自動化某些郵件合並功能。 這是我正在使用的代碼:

Sub open_DSN()

     Dim strConnection As String

     ActiveDocument.MailMerge.CreateDataSource Name:="DB-NAME", _
       Connection:="Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=DB-NAME;Data Source=DATA-SOURCE", _
       SQLStatement:="select * from DataTable"

     ActiveDocument.MailMerge.OpenDataSource Name:="DB-NAME"

     If ActiveDocument.MailMerge.DataSource.Name <> "" Then _
        MsgBox ActiveDocument.MailMerge.DataSource.Name
     ' – code lifted from MS Help within Word that seems the nearest to what I require
     'With ActiveDocument.MailMerge
     '    .MainDocumentType = wdFormLetters
     '    strConnection = "DSN=MS Access Databases;" _
     '        & "DBQ=C:\Northwind.mdb;" _
     '        & "FIL=RedISAM;"
     '   .OpenDataSource Name:="C:\NorthWind.mdb", _
     '        Connection:=strConnection, _
     '        SQLStatement:="SELECT * FROM Customers"
     'End With

     With ActiveDocument.MailMerge
           .MainDocumentType = wdFormLetters
           strConnection = "Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=DB-NAME;Data Source=DATA-SOURCE"
        .OpenDataSource Name:="DB-NAME", _
                Connection:=strConnection, _
                SQLStatement:="SELECT * FROM DataTable"
     End With
End Sub

不幸的是,我無法獲得此代碼來顯示數據。 我究竟做錯了什么?

您是否用連接字符串中的實際值替換了“ DB-NAME”和“ DATA-SOURCE”?

那么,您是否有一個名為DATA-Source的SQL Server實例以及一個名為DB-Name的數據庫?

可能不是?

更像MyServer \\ MyInstance和MyDatabase

我不知道MailMerge,因此無法評論您用於建立連接的代碼。
但是,如果您確定代碼沒有問題,則可能是連接字符串。

很多 不同的可能的 連接字符串可連接到SQL Server,因此正確的解決方案取決於您的SQL Server版本和設置(例如Windows身份驗證或SQL Server身份驗證...)。

這篇MSDN文章說MailMerge支持OLE DB和ODBC,因此您可以使用其中任何一種。
如果您向我們介紹有關SQL Server設置的更多信息,我們可以幫助您找到適合您的用例的正確連接字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM