VBA Excel ADO SQL更新查询不工作

VBA Excel ADO SQL更新查询不工作,sql,excel,vba,scripting,ado,Sql,Excel,Vba,Scripting,Ado,我不熟悉VBA和Excel脚本,但是,我正在尝试使用它连接到我创建的SQL Server。我已经从userform构建了一个通用查询,并创建了一个成功的SELECT语句来填充我的工作表 但是,当我尝试更新数据库中的此信息时,我失败了。代码没有抛出错误,但我在数据库中找不到我的更改。以下是我的尝试: 私有子数据库更新(查询) Dim conn作为ADODB连接 Dim recset为ADODB.Recordset Dim cmd作为ADODB.Command 作为字符串的Dim strConn '

我不熟悉VBA和Excel脚本,但是,我正在尝试使用它连接到我创建的SQL Server。我已经从userform构建了一个通用查询,并创建了一个成功的SELECT语句来填充我的工作表

但是,当我尝试更新数据库中的此信息时,我失败了。代码没有抛出错误,但我在数据库中找不到我的更改。以下是我的尝试:

私有子数据库更新(查询)
Dim conn作为ADODB连接
Dim recset为ADODB.Recordset
Dim cmd作为ADODB.Command
作为字符串的Dim strConn
'创建连接字符串
strConn=“Provider=SQLNCLI11;Server=IP地址;Database=Info;Trusted\u Connection=yes;DataTypeCompatibility=80;”
'创建连接和记录集对象
Set conn=新的ADODB.连接
Set recset=New ADODB.Recordset
'打开连接
连接开放式结构
'打开带有查询的记录集
'上一次尝试,没有错误
'recset.Open查询,conn
'执行记录集
Set cmd=New ADODB.Command
“我相信下面执行的查询会抛出错误
cmd.CommandText=Query
Set recset=cmd.Execute
“收工
Set recset=无
“recset.Close
关闭连接
设置连接=无
端接头

我很确定这个查询是正确的,但是如果我仍然不能弄清楚的话,我会在明天进行更新。

这里有一个例子可以为您提供帮助

Sub ImportDataFromExcel()
    Dim rng As Range
    Dim r As Long
    Dim conn As ADODB.Connection
    Dim strConn As String
    Dim strSQL As String

    strConn = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _
        "C:\Users\Ryan\Desktop\Coding\Integrating Access and Excel and SQL Server\Access & Excel & SQL Server\" & _
        "EXCEL AND ACCESS AND SQL SERVER\Excel & Access\Select, Insert, Update & Delete\Northwind.mdb"
    Set conn = New ADODB.Connection
    conn.Open strConn

    With Worksheets("Sheet1")
        lastrow = .Range("A2").End(xlDown).Row
        lastcolumn = .Range("A2").End(xlToRight).Column
        Set rng = .Range(.Cells(lastrow, 1), .Cells(lastrow, lastcolumn))
    End With

        'therow = 1

        For i = 2 To lastrow
            'r = rng.Row
            'If r > 1 Then
                strSQL = "UPDATE PersonInformation SET " & _
                    "FName='" & Worksheets("Sheet1").Range("B" & i).Value & "', " & _
                    "LName='" & Worksheets("Sheet1").Range("C" & i).Value & "', " & _
                    "Address='" & Worksheets("Sheet1").Range("D" & i).Value & "', " & _
                    "Age=" & Worksheets("Sheet1").Range("E" & i).Value & " WHERE " & _
                    "ID=" & Worksheets("Sheet1").Range("A" & i).Value
                conn.Execute strSQL
            'End If
            'r = r + 1
        Next i


    conn.Close
    Set conn = Nothing
End Sub


有这么多不同的版本。希望您可以调整此示例以满足您的特定需要。

您的代码不会尝试更新数据。您没有包含
Query
的内容,因此很难找出可能的错误。