Update dữ liệu vào DS có sẵn. (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Excel365

Thành viên tích cực
Tham gia
29/10/10
Bài viết
865
Được thích
127
Giới tính
Nam
Nhờ các anh chị giúp em viết code update dữ liệu vào DS chung. Thank!
 

File đính kèm

Mình đã dùng vlookup được nhưng mà, nếu không có mã số thì nó báo lỗi #N/A. mà vlookup thì nó đâu có tự thêm dòng được đâu anh. Mình phải tự chèn thue công những người báo lỗi #N/A
 
Upvote 0
Mình đã dùng vlookup được nhưng mà, nếu không có mã số thì nó báo lỗi #N/A. mà vlookup thì nó đâu có tự thêm dòng được đâu anh. Mình phải tự chèn thue công những người báo lỗi #N/A

Thì bạn khử lỗi nó đi là được. Còn nếu vẫn quyết định dùng code thì ai lại copy dữ liệu 1 lô 1 block đưa vào như vậy. Người ta thường làm là tạo 1 file data để chứa dữ liệu riêng biệt, khi cần cập nhật thì chọn data đó nó sẽ update vào.
Nếu muốn như thế thì ta tiếp tục nhé.
 
Upvote 0
Vậy anh giúp em đi. Cám ơn anh trước nhe
 
Upvote 0
Vậy anh giúp em đi. Cám ơn anh trước nhe

Code sẽ như sau:

Mã:
Sub HLMT_ADO()
On Error GoTo loi
Set Cn = CreateObject("ADODB.Connection")
Dim mySQL As String, strFile As Variant
strFile = Application.GetOpenFilename()
    If strFile <> False Then
        [G9:G600].ClearContents
             With Cn
                   mySQL = "UPDATE [Data$A3:F6000] a " _
                            & "INNER JOIN " _
                            & "[Excel 8.0;HDR=No;IMEX=2;DATABASE=" & ThisWorkbook.FullName & "].[Sheet1$B9:G600] b  " _
                            & "ON a.F1=b.F1 " _
                            & "SET b.F6=a.F6"

                  .Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                                    "Data Source=" & strFile & _
                                    ";Extended Properties=""Excel 8.0;HDR=No;"";"
                  .Execute mySQL
                  .Close
            End With
    End If
Set Cn = Nothing
Exit Sub
loi:
MsgBox Err.Description

End Sub
Giải nén, mở file Test và chọn file data theo file đính kèm nhé.
 

File đính kèm

Upvote 0
Ủa sao kỳ vậy anh? Nó chỉ cập nhật chức vụ không à. Bên bảng cập nhật thì có DS của những người như từ Trần Minh Được trở xuống, khi em bấm Cập Nhật bên bảng Test thì không có tên của những người này. Như code của anh thì DS bên bảng Test phải là DS đầy đủ. Nhưng mà ý của em là, em có 1 DS như vậy (DS CHUNG), hàng tháng em cũng có 1 DS gần giống như vậy (DS MỚI), nhưng số người sẽ có thêm người mới. Nếu khi mình bấm Cập Nhật thì nó sẽ Update những người mới nầy vào DS CHUNG Theo đúng vị trí của DS MỚI
VD: DS CHUNG (chưa cập nhật) thì Nguyễn Minh Hiền đang ở BP ĐIỀU HÀNH CHẾ BIẾN CÔNG NHẬT, nhưng tháng mới Nguyễn Minh Hiền làm việc ở Tổ IQF. Vì vậy khi mình bấm Cập nhật thì Nguyễn Minh Hiền sẽ cập nhật sang DS CHUNG ở Tổ IQF. Anh có thể tạo giúp em 1 sheets là DS CHUNG và 1 sheet là DS hàng tháng em nhập vào (người cũ có, người mới có). Khi em bấm nút cập nhật thì nó sẽ Cập nhật sang DS CHUNG
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Bạn thử code sau:

Mã:
Sub HLMT_ADO()
On Error GoTo loi
Set Cn = CreateObject("ADODB.Connection")
Dim mySQL, strFile  As String
strFile = ThisWorkbook.FullName
        With Cn
               mySQL = "INSERT INTO [SD CHUNG$] ( F1, F2, F3, F4, F5, F6 ) " & _
                              "SELECT [DS MOI$].F1, [DS MOI$].F2, [DS MOI$].F3, [DS MOI$].F4, [DS MOI$].F5, [DS MOI$].F6 " & _
                              "FROM  [DS MOI$] LEFT JOIN [SD CHUNG$] ON [DS MOI$].F1=[SD CHUNG$].F1 " & _
                              "WHERE [DS MOI$].F1 Is Not Null AND [SD CHUNG$].F1 Is Null;"

              .Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
                              "Data Source=" & strFile & _
                              ";Extended Properties=""Excel 8.0;HDR=No;"";"
              .Execute mySQL
              .Close
       End With
Set Cn = Nothing
Exit Sub
loi:
MsgBox Err.Description

End Sub

Để cho nó chèn theo phòng ban và với điều kiện CSDL bạn như thế ở ADO thì là điều không thể.
 

File đính kèm

Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom