Excel VBA 更新 SQL 表

Posted

技术标签:

【中文标题】Excel VBA 更新 SQL 表【英文标题】:Excel VBA to Update SQL Table 【发布时间】:2010-04-03 03:48:56 【问题描述】:

我有一个小型 Excel 程序,用于将数据上传到 SQL 服务器。

这已经有一段时间了。

我现在的问题是我想为用户提供一个更新 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 而不是导入新记录?

再次感谢您的帮助

【问题讨论】:

【参考方案1】:

不要使用AddNew 来打开新记录,而是使用Find 来定位现有记录。喜欢:

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

或者:

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

可以Find 多行,并使用EOFMoveNext 循环遍历它们。

【讨论】:

以上是关于Excel VBA 更新 SQL 表的主要内容,如果未能解决你的问题,请参考以下文章

VBA Excel - 从 Excel 中的一个单元格中选择一个值以更新 SQL 表

VBA Excel ADO SQL 更新查询不起作用

VBA - 从 Excel 更新 Access 文件的链接表

获取自动化错误 Excel VBA 尝试更新 SQL Db

VBA研究如何将Excel工作表的内容更新到数据库

如何使用Excel VBA仅更新特定工作表中的链接,而不是整个工作簿?