• nén file Access bằng VBA
  • nén file Access bằng VBA

    Noname > 09-08-10, 01:44 AM

    Bình thường,khi mà các câu lệnh Make, Append, delete thực hiện nhiều lần thì file access của bạn sẽ phình to không tưởng tượng được, có khi lên tới hàng GB, để nén access ta vào menu tool-->database Ulities-->Compact and repair Database
    Nhưng đôi khi chúng ta cần thực hiện điều đó bằng VBA vì đã khóa Menu, thay bằng customise menu, hoặc với mục đích thân thiện với người dùng chỉ trên một nút nhấn.

    hãy copy đoạn code sau của tác giả Juan M. Afan de Ribera để làm điều đó

    Code:

    ' ***** Code Start *****
    Mã:
    Public Sub CompactDB()

       CommandBars("Menu Bar"). _
       Controls("Tools"). _
       Controls("Database utilities"). _
       Controls("Compact and repair database..."). _
       accDoDefaultAction

    End Sub
  • RE: nén file Access bằng VBA

    Noname > 09-08-10, 01:46 AM

    Vào Project / References và chọn Microsoft Access 10.0 Object Library.
    Thêm đoạn code sau vào Form:

    Mã:
    Private Sub Form_Unload(Cancel As Integer)
    'Nén CSDL tên MyData.mdb và tạo 1 CSDL mới tên DB2.mdb
    DBEngine.CompactDatabase App.Path & "MyData.mdb", App.Path & "DB2.mdb"
    'Xóa MyData.mdb
    Kill "MyData.mdb"
    'Đổi tên DB2.mdb thành MyData.mdb
    Dim OldName
    Dim NewName
    OldName = "DB2.mdb": NewName = "MyData.mdb"
    Name OldName As NewName
  • RE: nén file Access bằng VBA

    haquocquan > 30-08-10, 03:08 AM

    Đoạn code trên có thể dùng để nén một file DB khác được không pác Noname (dùng nút lệnh trên file DB này để compact and repair file DB khác)
  • RE: nén file Access bằng VBA

    hmhieu > 10-12-10, 12:11 PM

    Mình cũng muốn biết như câu hỏi của bạn haquocquan? làm ơn!
  • RE: nén file Access bằng VBA

    Noname > 10-12-10, 12:16 PM

    Đoạn code thứ 2 cho phép mình Compact 1 file khác đó, bạn thử xem sao. Điều kiện là không ai truy cập vào file đó thời điểm mình đang compact! Để hôm nào rảnh mình làm demo cho!
  • RE: nén file Access bằng VBA

    hmhieu > 18-12-10, 02:40 PM

    (30-08-10, 03:08 AM)haquocquan Đã viết: Đoạn code trên có thể dùng để nén một file DB khác được không pác Noname (dùng nút lệnh trên file DB này để compact and repair file DB khác)

    (10-12-10, 12:16 PM)Noname Đã viết: Đoạn code thứ 2 cho phép mình Compact 1 file khác đó, bạn thử xem sao. Điều kiện là không ai truy cập vào file đó thời điểm mình đang compact! Để hôm nào rảnh mình làm demo cho!

    Mình còn quá gà, rất mong demo của bác!. Vì minh thấy vấn đề này rất hay, mình sử dụng để nén file chứa dữ liệu để giãm dung lượng mỗi lần thoát chương trình chính. Heart
  • RE: nén file Access bằng VBA

    Minh Tiên > 23-03-13, 01:22 PM

    (09-08-10, 01:44 AM)Noname Đã viết: Bình thường,khi mà các câu lệnh Make, Append, delete thực hiện nhiều lần thì file access của bạn sẽ phình to không tưởng tượng được, có khi lên tới hàng GB, để nén access ta vào menu tool-->database Ulities-->Compact and repair Database
    Nhưng đôi khi chúng ta cần thực hiện điều đó bằng VBA vì đã khóa Menu, thay bằng customise menu, hoặc với mục đích thân thiện với người dùng chỉ trên một nút nhấn.

    hãy copy đoạn code sau của tác giả Juan M. Afan de Ribera để làm điều đó

    Code:

    ' ***** Code Start *****
    Mã:
    Public Sub CompactDB()

       CommandBars("Menu Bar"). _
       Controls("Tools"). _
       Controls("Database utilities"). _
       Controls("Compact and repair database..."). _
       accDoDefaultAction

    End Sub

    Đoạn code trên chỉ dùng cho ms Access 2003, còn Ms Access 2007 dùng đoạn code sau để nén (Thay cho chọn Compact on close):

    Private Sub Form_Unload(Cancel As Integer)
    SendKeys ("%T D C")
    End Sub
  • RE: nén file Access bằng VBA

    hugox03 > 21-05-13, 04:50 PM

    [font=Times New Roman][size=medium] Không làm được noname ơi ! bạn hãy chi mình rõ hơn đi hoặc giúp mình làm bản demo với !!! thanks !!!!!!
  • RE: nén file Access bằng VBA

    danhxetnghiem > 03-06-14, 02:29 PM

    (09-08-10, 01:44 AM)Noname Đã viết: Bình thường,khi mà các câu lệnh Make, Append, delete thực hiện nhiều lần thì file access của bạn sẽ phình to không tưởng tượng được, có khi lên tới hàng GB, để nén access ta vào menu tool-->database Ulities-->Compact and repair Database
    Nhưng đôi khi chúng ta cần thực hiện điều đó bằng VBA vì đã khóa Menu, thay bằng customise menu, hoặc với mục đích thân thiện với người dùng chỉ trên một nút nhấn.

    hãy copy đoạn code sau của tác giả Juan M. Afan de Ribera để làm điều đó

    Code:

    ' ***** Code Start *****
    Mã:
    Public Sub CompactDB()

       CommandBars("Menu Bar"). _
       Controls("Tools"). _
       Controls("Database utilities"). _
       Controls("Compact and repair database..."). _
       accDoDefaultAction

    End Sub

    Mình muốn nén theo một thời gian mặc định. ví dụ như khi thoát chương trình, hay 1 ngày một lần thì phải làm sao?
  • RE: nén file Access bằng VBA

    Minh Tiên > 03-06-14, 02:41 PM

    Chào bạn "danhxetnghiem" !
    Như yêu cầu của bạn thì:
    1. Muốn nén khi mỗi lần thoát chương trình: Bạn tạo 1 formMain form này phải được đóng sau cùng, tại thủ tục On Close của formMain bạn gọi thực hiện đoạn code nén trên.
    2. Muốn nén sau một số ngày nào đó: Bạn tạo 1 table có trường Ngaydanen kiểu Date/Time, lần đầu tiên nén chương bạn Save ngày này vào Ngaydannen. Mỗi khi mở (Hoặc đóng) chương trình bạn so sánh ngày hiện tại với ngày đã lưu, nếu "ngày hiện tại - Ngày đã lưu >= số ngày qui định" thì chương trình gọi lệnh nén.
    Chúc bạn thành công !