Chào mọi người.
Mình đang mày mò ADO. Trên userform Excel mình tạo một nút bấm, khi bấm thì dữ liệu trên sẽ chuyển vào access, nếu mã sản phẩm có rồi thì nó thực hiện đổi tên (Update) còn nếu không thì sẽ thêm cả mã và tên vào Accces.
Dữ liệu mình có dạng như sau (ví dụ):
Code Name
120931 Cốc
390032 Máy khoan
100122 Máy nóng lạnh A
110144 Máy lọc nước
200601 Thùng carton
Dòng mã có dạng sau:
Nhưng khi mình chạy sub thì nếu mã đã có thì tất cả các mã đó được update nhưng nếu chưa có thì chỉ mã đầu tiên chưa có của lần chạy đó được thêm vào access (nên có bao nhiêu mã mới phải chạy bấy nhiêu lần sub). Mình có thử thì thấy nguyên nhân là do thông số lRecordsAffected, nếu để lRecordsAffected = 0 ngay sau mỗi lần chạy next i thì tất cả mã mới được thêm vào hết nhưng lại không update được mã nữa.
Mình mới tập tành ADO(đọc và áp dụng luôn vào công việc, sai đâu sửa đó) nên nhiều chỗ chưa thấu. Mọi người giúp mình có phương án nào cho trường hợp này không?[/Code]
Mình đang mày mò ADO. Trên userform Excel mình tạo một nút bấm, khi bấm thì dữ liệu trên sẽ chuyển vào access, nếu mã sản phẩm có rồi thì nó thực hiện đổi tên (Update) còn nếu không thì sẽ thêm cả mã và tên vào Accces.
Dữ liệu mình có dạng như sau (ví dụ):
Code Name
120931 Cốc
390032 Máy khoan
100122 Máy nóng lạnh A
110144 Máy lọc nước
200601 Thùng carton
Dòng mã có dạng sau:
Mã:
Dim objcommand As ADODB.Command
Dim j As Long, lRecordsAffected As Long
Dim sConnect As String
....
For j = LBound(Arr, 1) To UBound(Arr, 1)
objcommand.CommandText = "UPDATE [DATA] " & _
"SET [Name]='" & Arr(j, 2) & "'" & _
" WHERE [Code] = '" & (Arr(j, 1) & "';"
objcommand.Execute recordsaffected:=lRecordsAffected, Options:=adCmdText Or adExecuteNoRecords
If lRecordsAffected < 1 Then
objcommand.CommandText = "INSERT INTO [DATA] ([Code], [Name 1])" & _
" VALUES ('" & (Arr(j, 1) & "', '" & (Arr(j, 2) & "');"
objcommand.Execute recordsaffected:=lRecordsAffected, Options:=adCmdText Or adExecuteNoRecords
End If
Next i
Nhưng khi mình chạy sub thì nếu mã đã có thì tất cả các mã đó được update nhưng nếu chưa có thì chỉ mã đầu tiên chưa có của lần chạy đó được thêm vào access (nên có bao nhiêu mã mới phải chạy bấy nhiêu lần sub). Mình có thử thì thấy nguyên nhân là do thông số lRecordsAffected, nếu để lRecordsAffected = 0 ngay sau mỗi lần chạy next i thì tất cả mã mới được thêm vào hết nhưng lại không update được mã nữa.
Mình mới tập tành ADO(đọc và áp dụng luôn vào công việc, sai đâu sửa đó) nên nhiều chỗ chưa thấu. Mọi người giúp mình có phương án nào cho trường hợp này không?[/Code]
Lần chỉnh sửa cuối: