之前学过了怎样更新数据库中的一条数据,这节来看下怎样批量更新数据库中的数据。仍然是之前的那个Excel源数据,但是其中有些内容我改过了,现在我要把改过的数据一次性的都更新到数据库表中。之前在讲更新单条数据的时候我们讲过update的用法,当一次性更新多条数据的时候我们仍然用update方法。看下面的代码

Sub 批量更新()

Dim cnn As Object, mypath, SQL, SQL1

Set cnn = CreateObject("adodb.connection")

mypath = ThisWorkbook.Path & "\学校管理.accdb"

cnn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & mypath

SQL = "update 学生信息 a, [Excel 12.0;imex=0;Database=" & ThisWorkbook.FullName & "].[" & ActiveSheet.Name & "$" & [a1].CurrentRegion.Address(0, 0) & "] b set a.姓名=b.姓名,a.性别=b.性别,a.出生日期=b.出生日期,a.籍贯=b.籍贯,a.住址=b.住址,a.家庭电话=b.家庭电话,a.年级=b.年级,a.班级=b.班级,a.特长=b.特长 where a.学生编号=b.学生编号"

'Debug.Print SQL

cnn.Execute SQL

cnn.Close

Set cnn = Nothing

End Sub

上面SQL语句的结构是"update 表1 a,表2 b set a.字段=b.字段 where a.主键=b.主键"。代码中的SQL翻译过来就是“update 学生信息 a, [Excel 12.0;imex=0;Database=C:\Users\zhan\Desktop\批量更新.xlsm].[Sheet1$A1:J101] b set a.姓名=b.姓名,a.性别=b.性别,a.出生日期=b.出生日期,a.籍贯=b.籍贯,a.住址=b.住址,a.家庭电话=b.家庭电话,a.年级=b.年级,a.班级=b.班级,a.特长=b.特长 where a.学生编号=b.学生编号”,红色部分是Excel表格,就是表b。

更多推荐

vba 更新mysql数据库_SQL批量更新数据库数据 | VBA实例教程