[英]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))
,原因有兩個:
如果數據集.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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.