2011-12-06 90 views
2

我想使用從SQL Server數據庫繪製的數據自動化一些郵件合併功能。以下是我正在使用的代碼:如何使用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 

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

+0

RajendraNarine:不客氣。此外,由於您是StackOverflow的新手,我想通知您,您可以通過選中答案旁邊的勾號來接受最能幫助您的答案。 –

回答

0

是否用連接字符串中的實際值替換「DB-NAME」和「DATA-SOURCE」?

0

那麼你有一個稱爲數據源的SQL服務器實例與一個名爲DB-Name的數據庫?

可能不是?

更多類似的MyServer \ MYINSTANCE和MYDATABASE

0

我不知道郵件合併,所以我不能在您用來建立連接的代碼註釋。
但是如果你確定代碼沒問題,那麼它可能是連接字符串。

lots ofdifferent possibleconnection strings連接到SQL Server,所以正確的解決方案取決於您的SQL Server版本和設置(例如,Windows認證或SQL Server認證...)。

MSDN article它說,MailMerge支持OLE DB和ODBC,所以你可以使用其中任何一個。
如果您告訴我們有關您的SQL Server安裝程序的更多信息,我們可以幫助您找到正確的連接字符串以供您使用。