ADOの方が早い
何の話かと言うと、ACCESSのテーブルにレコードを追加する処理速度をSQLと比較した場合の事なんです。
前回作成したSQLをコレクションに入れて複数処理する自作関数を使用して2~3件のデータで追加処理のテストをしていたのですが、開始から終了までどうも一呼吸入る感じがして気になってたんです。
で、調べたらADOでAddNewメソッドが速いらしい。
試しに実装してみたらこちらの方が体感で格段に速く感じるんですね。
なので、AddNewを使用した方の自作関数に替えました。
何事も方法は1つじゃないって事ですね。 ^^
以下はその自作関数。
Function CompletionProcess(ByVal ws As Worksheet, ByVal tableName As String) As Boolean
Dim i As Long
DataBaseConnect
On Error GoTo errorHandler
Set adoRs = New ADODB.Recordset
adoRs.Open tableName, adoCn, adOpenKeyset, adLockOptimistic
adoCn.BeginTrans
For i = 2 To ws.Cells(Rows.Count, "A").End(xlUp).Row
If ws.Cells(i, "M").Value = 1 Then
adoRs.AddNew Array(ws.Cells(1, "A").Value, ws.Cells(1, "B").Value, ws.Cells(1, "D").Value, _
ws.Cells(1, "F").Value, ws.Cells(1, "M").Value), _
Array(ws.Cells(i, "A").Value, ws.Cells(i, "B").Value, ws.Cells(i, "D").Value, _
ws.Cells(i, "F").Value, ws.Cells(i, "M").Value)
adoRs.Update
End If
Next i
adoCn.CommitTrans
CompletionProcess = True
DataBaseOut
Exit Function
errorHandler:
adoCn.RollbackTrans
DataBaseOut
CompletionProcess = False
ErrorDisplay
End Function