Excel中VBA编程学习笔记(十六)--Access数据库更新操作

【例1】使用Connection的Execute的方法

数据库格式:

Excel中VBA编程学习笔记(十六)--Access数据库更新操作_第1张图片

 

Sub test()

    Dim conString$, sqlString$

    Dim cnn, rst

   

    Set cnn = CreateObject("ADODB.Connection")

    Set rst = CreateObject("ADODB.Recordset")

    Dim i%, sex$, Address$, Name$, birthDay$

   

    conString = "provider=Microsoft.ace.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\test.accdb;"

    cnn.Open conString

    sqlString = "update students set sSex=''"

    cnn.Execute sqlString

    MsgBox "更新成功"

    cnn.Close

End Sub

 

  1. 使用RecordSet

数据库字段如下:

Excel中VBA编程学习笔记(十六)--Access数据库更新操作_第2张图片

Sub exercise()

    Dim cnn, rst

    Set cnn = CreateObject("ADODB.connection")

    Set rst = CreateObject("ADODB.recordset")

    Dim sqlStr$, conStr$

    conStr$ = "provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\test.mdb"

    sqlStr = "select * from students where 总分 <160"

    cnn.Open conStr$

    rst.Open sqlStr, cnn, adOpenDynamic, adLockOptimistic

    Do Until rst.EOF

        rst("总分") = 160

        rst.MoveNext

    Loop

    cnn.Close

End Sub

【例3】从excel获取批量写入ACCESS数据库

数据库字段如下:

Excel中VBA编程学习笔记(十六)--Access数据库更新操作_第3张图片

Execel数据如下:

Excel中VBA编程学习笔记(十六)--Access数据库更新操作_第4张图片

Sub exercise()

    Dim cnn ', rst

    Set cnn = CreateObject("ADODB.connection")

    'Set rst = CreateObject("ADODB.recordset")

    Dim rst As New ADODB.Recordset

    Dim sqlStr$, conStr$, Count%

   

    conStr$ = "provider=Microsoft.Ace.OLEDB.12.0;Data Source=" & ThisWorkbook.Path & "\test.accdb"

    sqlStr = "insert into students(sName,sSex,sAddress,birthDay)  select 姓名, 性别, 地址, 出生日期 from [excel 8.0;database=" & ThisWorkbook.FullName & "].[sheet2$]"

    cnn.Open conStr$

   

    cnn.Execute sqlStr, Count

   

    MsgBox "更新了" & Count & "条结果"

    cnn.Close

End Sub

注:上面方式对于未打开的工作薄也可以获取数据.红色加粗部分标注的Excel 8.0随着不同的office版本需要做相应的改变。

你可能感兴趣的:(Excel)