Giúp đoạn code VBE xáo toàn bộ dữ liệu Access (1 người xem)

Liên hệ QC

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

huyhoang_mmyeht

Thành viên hoạt động
Tham gia
5/5/09
Bài viết
142
Được thích
12
Do mình không dành về VBE nên muốn nhờ các bạn giúp hộ mình với
Mình có đoạn code của một bạn cho nhưng nó chỉ Xóa được 1 dòng trong Access nhưng mình muốn xóa toàn bộ dự liệu trong table đó nhưng loay hoay mãi không biết làm vậy nhờ các bạn giúp mình với!

Cảm ơn các bạn!
Mã:
Sub TEST()On Error GoTo loi


    Dim Dbs  As Object, Rs As Object, db As Object, r As Long, lsSQL As String
    Set Dbs = CreateObject("DAO.DBEngine.120")
    Set db = Dbs.OpenDatabase(ThisWorkbook.Path & "\Database.accdb")
    Set Rs = db.OpenRecordset("Details")
            Rs.Delete
    Set Dbs = Nothing
    Rs.Close: Set Rs = Nothing
    db.Close: Set db = Nothing
    Exit Sub
loi:
    MsgBox "Khong thu hien duoc"
End Sub
 
Lần chỉnh sửa cuối:
... Nếu bạn viết code bằng tiếng thuần việt thì mới phục. Ka ka ka

Được bạn phục thì tôi béo thêm được chút gì?
Cỡ đẳng cấp tôi, dùng tiếng Việt để viết quy trình kiểu như pseudo-pascal hay Perl; sau đó viết một cái compiler/translator để nó dịch ra VBA hay C là chuyện nằm trong tầm tay. Tuy nhiên, tại sao lại phải đi vòng ngõ sau trong khi mình có chìa khoá đường hoàng vào cổng chính?
Cớ cáo già như tôi, dê non không nói khích nổi đâu.
 
Upvote 0
Mình không biết đây là quy định xin lỗi nhé, mình đã sửa rồi!
 
Upvote 0
Thủ tục Delete của recordset chỉ hoạt đọng trên cái record mà nó đang dựa con trỏ. Nếu bạn chưa dời con trỏ thì đó là cái record đầu tiên.
Muốn xoá toàn bộ recordset thì dùing một vòng lặp xoá và dời con trỏ.

Do While Not rs.EOF
rs.Delete
rs.MoveNext
Loop

Tuy nhiên, xoá như vậy là phải duyệt qua từng record của recordset, không được hiệu quả lắm. Cách tốt hơn là chạy lênh "Delete * From Detalis":
1. Nếu code trong Excel thì dùng ADO và thủ tục Execute
2. Nếu code trong Access thì dùng DoCmd.RunSQL

Chú thích: quy định là của riêng tôi chứ không phải của diễn đàn.
Tôi từ chối không giao thiệp với người Việt bằng những câu xã giao tiếng ngoại. Đối với tôi, câu chào câu cảm ơn là câu lễ, là người Việt sao lại phải lễ độ qua tiếng Tây? Bạn có quyền dùng tiếng Tây để làm gì mặc bạn, nhưng tôi cũng có quyền không nhận.
 
Upvote 0
Mình làm bên excel để xáo dữ liệu bên Access, Access là data dữ liệu vì excel không đủ record!
 
Upvote 0
Mình làm bên excel để xáo dữ liệu bên Access, Access là data dữ liệu vì excel không đủ record!
Bạn thử code sau để xóa,

Mã:
Sub XoaBang()

   Dim cn As Object, rst As Object
   Set cn = CreateObject("ADODB.Connection")
   cn.Open ("Driver={Microsoft Access Driver (*.mdb)};Dbq=DuongDanDenTenFileAccess2003.mdb;Uid=Admin;Pwd=;")
   Set rst = cn.Execute("delete * from [TenBangCanXoa]")
           
End Sub
Lưu ý là code sẽ xóa tất cả dữ liệu trong bảng, muốn xóa dữ liệu tùy ý thì phải thêm Where
 
Upvote 0
Vậy mình muốn đưa dữ liệu vào Access thì phải làm sao? còn dùng Inport thì phải cùng dòng cùng tiêu đề, vì file của mình nhiều cột dòng khác nhau, hiện mình đang làm bằng code sau, nhưng nhược điểm là nó duyệt luôn luôn thiếu 1 record! mình dùng access 2010
On Error GoTo loi Dim Dbs As Object, rs As Object, db As Object, r As Long
Set Dbs = CreateObject("DAO.DBEngine.120")
Set db = Dbs.OpenDatabase("\\d24103\BC XNT\Database.accdb")
Set rs = db.OpenRecordset("Details")
r = 3
Do Until r = Range("A648576").End(xlUp).Row
With rs
.AddNew
.Fields("Material") = Range("A" & r).Text
.Fields("Qty") = Range("B" & r).Value
.Fields("Amount") = Range("C" & r).Value
.Fields("MVT") = Range("D" & r).Text
.Fields("Debit") = Range("E" & r).Text
.Fields("Special") = Range("F" & r).Text
.Fields("Plant") = Range("G" & r).Text
.Fields("Location") = Range("H" & r).Text
.Fields("HeaderText") = Range("I" & r).Text
.Update
End With
r = r + 1
Loop
Set Dbs = Nothing
rs.Close: Set rs = Nothing
db.Close: Set db = Nothing
Exit Sub
loi:
MsgBox "Vui lòng kiem tra lai du lieu"
 
Upvote 0
Vậy mình muốn đưa dữ liệu vào Access thì phải làm sao? còn dùng Inport thì phải cùng dòng cùng tiêu đề, vì file của mình nhiều cột dòng khác nhau, hiện mình đang làm bằng code sau, nhưng nhược điểm là nó duyệt luôn luôn thiếu 1 record! mình dùng access 2010
Bạn làm được tới mức đó rồi mà vấn đề thiếu 1 record hổng sửa được là hơi bị lạ à nghen --=0. Nếu thiếu record ở đầu thì thử chỉnh r=2, còn nếu thiếu record cuối thì chỉnh như vậy xem sao?
PHP:
Do Until r > Range("A648576").End(xlUp).Row
Còn thiếu chỗ nào khác thì nên kiểm tra lại dữ liệu --=0
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom