使用Outlook连接到SQL Server数据库

时间:2015-08-12 11:21:57

标签: sql sql-server vba outlook-vba

我想使用Outlook宏连接到MS SQL Server数据库。但是我不知道代码是错还是我需要添加一个库/驱动程序或者这里发生的事情但它不起作用。

Private Sub Application_Startup()
On Error GoTo ExitHere
    'adodb connection to other database
    stg_cn.Open "Provider = SQLOLEDB;" & _
                        "Data Source = 192.168.100.100;" & _
                        "Initial Catalog = hugeDB;" & _
                        "Integrated Security=SSPI;" & _
                        "User ID = oneuser;" & _
                        "Password = onepassword;"

    sQuery = "SELECT * FROM documents where location = 'IE'"

    'set reference to query
    Set cmd = New ADODB.Command
        cmd.ActiveConnection = stg_cn
        cmd.CommandType = adCmdText
        cmd.CommandText = sQuery
    Set rs = cmd.Execute
    Do While Not rs.EOF
        For i = 0 To rs.Fields.count - 1
            MsgBox (i + 1)
        Next
        rs.MoveNext
    Loop
ExitHere:
    If Not stg_cn Is Nothing Then stg_cn.Close
    Set rs = Nothing
    Set stg_cn = Nothing
    Exit Sub

End Sub

2 个答案:

答案 0 :(得分:8)

在眼睛测试中,我无法弄清楚什么是错的,我认为它必须对你进行ADO操作的方式做些什么。

但我只是把我编写的最后一个宏用于从Macro连接到SQL-Server。希望能帮助到你。

Private Sub Workbook_Open()
On Error GoTo ErrorHandler
    '**************************************Initialize Variables**************************************
    sServer = "<SQL SERVER Server>"
    sDBName = "<SQL SERVER DB>"

    '**************************************Open Connection**************************************
    'adodb connection to other database
    stg_cn.Open "Provider=SQLOLEDB;Data Source=" & sServer & _
                  ";Initial Catalog=" & sDBName & _
                  ";Integrated Security=SSPI;"

    sQuery = "SELECT * " & _
             "FROM Table "

    'set reference to query
    Set cmd = New ADODB.Command
        cmd.ActiveConnection = stg_cn
        cmd.CommandType = adCmdText
        cmd.CommandText = sQuery
    Set rs = cmd.Execute
    Do While Not rs.EOF
        For i = 0 To rs.Fields.Count - 1
            <PERFORM OPERATIONS>
        Next
        rs.MoveNext
    Loop

ExitHere:
    If Not stg_cn Is Nothing Then stg_cn.Close
    Set rs = Nothing
    Set stg_cn = Nothing
    Exit Sub

End Sub

答案 1 :(得分:1)

@CodePhobia提供的连接字符串应该适合您。

以下内容仅包含用户ID和密码功能,因为您的原始问题显示尝试使用此连接。

Dim rsConn as ADODB.Connection
Set rsConn = New ADODB.Connection
With rsConn
    .ConnectionString = "Provider = sqloledb;" & _
                        "Data Source = myServerName;" & _
                        "Initial Catalog = myCatalog;" & _
                        "Integrated Security=SSPI;" & _
                        "User ID = myUserID;" & _
                        "Password = myPassword;"
    .Open
End With

您可以在将来使用this website查找连接字符串。它应涵盖您希望建立的所有可能的连接。