'Cách 1:
Function InsertInto_GLDATA()
'Macro purpose: To add record to Access database using ADO and SQL
'NOTE: Reference to Microsoft ActiveX Data Objects Libary required
'-------------------------------------------------------------------------------
Application.ScreenUpdating = False
Dim gcnAccess as New ADOB.connection
Dim gcnRecords as New ADOB.Recordset
Dim rngDetail As Range
Dim tblName As String
tblName = "GLDATA"
'-------------------------------------------------------------------------------
'Open connection to the database
Call ConnectToDatabase
'Chuan bi tien hanh import du lieu vao access
On Error GoTo EndUpdate
'-------------------------------------------------------------------------------
'Insert records into database from worksheet table
gcnAccess.BeginTrans
Set gcnRecords = New ADODB.recordset
For Each rngDetail In Range(Sheets("GLDATA").[a2], Sheets("GLDATA").[a65536].End(xlUp))
gcnRecords.Open "Select Period,DocNbr,DocDate,DocDesc,DocAttached,DrAcct,CrAcct,CustVendID,InvtID,LineQty," & _
"LineUP,LineAmt,Serial,InvcNbr,InvcDate,TaxRate,InvcDesc,ContactName,WorkCode,TaxID," & _
"Division,CostCenter,CflwID,User,Date From " & tblName, gcnAccess, adOpenStatic, adLockPessimistic, adCmdText
With gcnRecords
.AddNew ' create a new record
' Add values to each field in the record
.Fields("Period") = rngDetail.Value
.Fields("DocNbr") = rngDetail(, 2).Value
.Fields("DocDate") = rngDetail(, 3).Value
.Fields("DocDesc") = rngDetail(, 4).Value
.Fields("DocAttached") = rngDetail(, 5).Value
.Fields("DrAcct") = rngDetail(, 6).Value
.Fields("CrAcct") = rngDetail(, 7).Value
.Fields("CustVendID") = rngDetail(, 8).Value
.Fields("InvtID") = rngDetail(, 9).Value
.Fields("LineQty") = rngDetail(, 10).Value
.Fields("LineUP") = rngDetail(, 11).Value
.Fields("LineAmt") = rngDetail(, 12).Value
.Fields("Serial") = rngDetail(, 13).Value
.Fields("InvcNbr") = rngDetail(, 14).Value
.Fields("InvcDate") = rngDetail(, 15).Value
.Fields("TaxRate") = rngDetail(, 16).Value
.Fields("InvcDesc") = rngDetail(, 17).Value
.Fields("ContactName") = rngDetail(, 18).Value
.Fields("WorkCode") = rngDetail(, 19).Value
.Fields("TaxID") = rngDetail(, 20).Value
.Fields("Division") = rngDetail(, 21).Value
.Fields("CostCenter") = rngDetail(, 22).Value
.Fields("CflwID") = rngDetail(, 23).Value
.Fields("User") = rngDetail(, 24).Value
.Fields("Date") = rngDetail(, 25).Value
.Update ' stores the new record
.Close
End With
Next
a = MsgBox("Da cap nhat du lieu vao he thong thanh cong!", vbInformation, "Thong bao")
'-------------------------------------------------------------------------------------------------
EndUpdate:
'Check if error was encounted
If Err.Number <> 0 Then
'Error encountered. Rollback transaction and inform user
On Error Resume Next
gcnAccess.RollbackTrans
MsgBox vbObjectError & "-" & Err.Number & "-" & Err.Description, vbCritical, "Error!"
Else
On Error Resume Next
gcnAccess.CommitTrans
End If
'Close the ADO objects
gcnAccess.Close
Set gcnRecords = Nothing
Set gcnAccess = Nothing
On Error GoTo 0
Application.ScreenUpdating = True
End Function