Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA更新SQL表_Sql_Excel_Vba_Sql Update - Fatal编程技术网

Excel VBA更新SQL表

Excel VBA更新SQL表,sql,excel,vba,sql-update,Sql,Excel,Vba,Sql Update,我有一个小的Excel程序,用于将数据上传到SQL server 这已经很好地工作了一段时间 我现在的问题是,我想为用户提供一个函数来更新SQL中的现有记录 因为此表上的每一行都有一个唯一的id列。有一个列调用UID,它是主键 这是当前上载新数据代码的一部分: Set Cn = New ADODB.Connection Cn.Open "Driver={SQL Server};Server=" & ServerName & ";Database=" & _

我有一个小的Excel程序,用于将数据上传到SQL server

这已经很好地工作了一段时间

我现在的问题是,我想为用户提供一个函数来更新SQL中的现有记录

因为此表上的每一行都有一个唯一的id列。有一个列调用UID,它是主键

这是当前上载新数据代码的一部分:

Set Cn = New ADODB.Connection
    Cn.Open "Driver={SQL Server};Server=" & ServerName & ";Database=" & _
        DatabaseName & ";Uid=" & UserID & ";Pwd=" & Password & ";"

rs.Open TableName, Cn, adOpenKeyset, adLockOptimistic

For RowCounter = StartRow To EndRow
    rs.AddNew
    For ColCounter = 1 To NoOfFields
        rs(ColCounter - 1) = shtSheetToWork.Cells(RowCounter, ColCounter)
    Next ColCounter
Next RowCounter
rs.UpdateBatch

 ' Tidy up
rs.Close
Set rs = Nothing
Cn.Close
Set Cn = Nothing
我是否可以修改此代码以更新特定的UID,而不是导入新记录


再次感谢您的帮助

要打开新记录,请使用
Find
查找现有记录,而不是
AddNew
。比如:

rs.Find "id = 100"
rs(1) = "ColumnOneValue"
或:

可以
查找
多行,并使用
EOF
MoveNext
在其上循环

rs.Find "LastName = 'Bush'"
rs("LastName") = "Blush"