首页 > 解决方案 > 将 VBA 更新为 SQL Server

问题描述

我正在尝试检索和更新 Excel/SQL 中的行,并发现此脚本有效,但我尝试在输入“existencia”值后立即更新它,而不是在更新宏上点击运行,找到工作表更改功能但我不确定如何将它添加到这个宏中。

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim con As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim rst As New ADODB.Recordset
    Dim i As Long
    Dim vDB As Variant
    Dim Ws As Worksheet

    con.ConnectionString = "Provider=SQLOLEDB; data source=LAPTOP\SQLEXPRESS;initial catalog=Inventario;Integrated Security=SSPI;"

    con.Open


    Set cmd.ActiveConnection = con
    Set Ws = ActiveSheet

    'The assumption is that the data on the Excel sheet is listed from a1 Cell, including fields.
    vDB = Ws.Range("a1").CurrentRegion

    For i = 2 To UBound(vDB, 1)
        cmd.CommandText = "UPDATE Productos SET Existencia='" & vDB(i, 4) & "' WHERE id_cod=" & vDB(i, 1) & " "
        cmd.Execute
    Next i

    con.Close
    Set con = Nothing

End Sub

标签: sql-serverexcelvba

解决方案


我使用 Worksheet_Change 事件做了很多事情,但我从来没有使用 Worksheet_Change 来更新 SQL Server 表中的数据。如果您考虑一下,这实际上没有任何意义。您可以整天在 Excel 文件中进行各种更改。人们一直这样做。当您完全完成更新、更改或其他操作后,您可以将数据推送到数据库中的表中。您不应该间歇性地执行此操作。否则,您将不得不在数据库表中进行各种清理。您不想为自己制造这种开销。


推荐阅读