繁体   English   中英

Excel VBA访问

[英]Excel VBA Access

我有以下代码,其中.Fields ...没有得到执行。 循环直接关闭连接,而没有在表中添加记录。

码:

Sub insertIntoTable()

    Dim moviesConn As ADODB.Connection
    Dim moviesData As ADODB.Recordset
    Dim moviesField As ADODB.Fields
    Dim r As Range

    Set moviesConn = New ADODB.Connection
    Set moviesData = New ADODB.Recordset

    moviesConn.ConnectionString = conStrAccess
    moviesConn.Open

    On Error GoTo closeConnection

    With moviesData
        .ActiveConnection = moviesConn
        .Source = "tblFilmDetails"
        .LockType = adLockOptimistic
        .CursorType = adOpenForwardOnly
        .Open

    On Error GoTo closeRecordset
        For Each r In Range("A3", Range("A2").End(xlDown))
            .AddNew
            .Fields("Title").Value = r.Offset(0, 1).Value
            .Fields("Release_Date").Value = r.Offset(0, 2).Value
            .Fields("Length").Value = r.Offset(0, 3).Value
            .Fields("Genere").Value = r.Offset(0, 4).Value
            .Update
        Next r
    End With

    closeRecordset:
    moviesData.Close

    closeConnection:
    moviesConn.Close

End Sub

请建议

我可以使用以下连接字符串使您的代码正常工作:

“提供程序= Microsoft.ACE.OLEDB.12.0;数据源= C:\\ Users \\ Best Buy \\ Desktop \\ test.accdb;持久安全信息= False;”

我们可以排除数据不匹配错误,因为它会在关闭连接之前引发3219 Runtime Error Operation。

在此处输入图片说明

Range("A3", Range("A2").End(xlDown))应该更改为Range("A2", Range("A" & Rows.Count).End(xlup)) ,原因有两个:

  1. 跳过第二行
  2. 如果没有数据超出第2行,您将添加1048575空记录(请问我怎么知道)

如果数据集.Update.UpdateBatch在添加所有记录后注释掉.Update并使用.UpdateBatch 这将大大提高性能。

    For Each r In Range("A3", Range("A2").End(xlDown))
        .AddNew
        .Fields("Title").Value = r.Offset(0, 1).Value
        .Fields("Release_Date").Value = r.Offset(0, 2).Value
        .Fields("Length").Value = r.Offset(0, 3).Value
        .Fields("Genere").Value = r.Offset(0, 4).Value
        '.Update
    Next r
    .UpdateBatch

在此处输入图片说明 注意:如果在添加记录时打开了表,则必须按F5刷新表并查看新数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM