如何在VBA ADO执行中获取受影响的行?

Dan*_*ett 6 ms-access vba ado ms-access-2007 access-vba

以下代码错误MsgBox cn.RecordsAffected:

参数类型错误,超出可接受的范围,或彼此冲突.

如何成功获取受影响的行数?这适用于Access 2003项目.我宁愿保持2003格式,所以如果还有另一种方法,那就太好了.我不想为了这个功能而升级整个项目.

Private Sub Command21_Click()
On Error GoTo Err1:
    Dim cn As ADODB.Connection
    Set cn = New ADODB.Connection
    With cn
        .Provider = "SQL Native Client"
        .ConnectionString = "Server=myserver\myinstance;Database=mydb;Uid=myuser;Pwd=mypass;]"
        .Open
    End With

On Error GoTo Err2:
    cn.Execute "SELECT * INTO someschema.sometable FROM someschema.anothertable"
    MsgBox cn.RecordsAffected
    Exit Sub

Err1:
    MsgBox "Failed to connect to database!"
    Exit Sub

Err2:
    MsgBox Err.DESCRIPTION
    cn.Close

End Sub
Run Code Online (Sandbox Code Playgroud)

Hei*_*nzi 7

ADODB.Connection没有RecordsAffected财产.但是,该Execute方法将受影响的记录作为ByRef参数[ MSDN ]返回:

Dim recordsAffected As Long
cn.Execute "SELECT * INTO someschema.sometable FROM someschema.anothertable", _
           recordsAffected
MsgBox recordsAffected    
Run Code Online (Sandbox Code Playgroud)