VBA Excel ADO SQL更新查询不工作
我不熟悉VBA和Excel脚本,但是,我正在尝试使用它连接到我创建的SQL Server。我已经从userform构建了一个通用查询,并创建了一个成功的SELECT语句来填充我的工作表 但是,当我尝试更新数据库中的此信息时,我失败了。代码没有抛出错误,但我在数据库中找不到我的更改。以下是我的尝试: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 '
私有子数据库更新(查询)
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
的内容,因此很难找出可能的错误。