簡體   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