" />
  • Thứ Sáu, 14/07/2006 09:43 (GMT+7)

    Chương trình VB6, Access XP và Compact Repair Database

    Câu hỏi :
    Chương trình VB 6.0 và sử dụng CSDL trong Access XP, khi chương trình vận hành thì file database *.mdb bị xử lý có dung lượng tăng lên rất nhiều và phải thực hiện lệnh "Compact and Repair Database" trong Access thì dung lượng mới trở về bình thường. Xin hỏi có cách nào để làm điều này từ chương trình VB6.0 không?


    Trả lời :
    Các file tài liệu Microsoft Office (Word, Excel, Access...) đều có tính chất hỗ trợ việc hiệu chỉnh nội dung nhanh chóng. Ý tưởng cơ bản là mỗi khi người dùng (hay ứng dụng) hiệu chỉnh nội dung của thành phần tài liệu nào thành nội dung mới, Office không cập nhật lại toàn bộ file tài liệu mà chỉ ghi thêm thông tin mới ở đâu đó trong file (thường ở cuối file) rồi cập nhật vùng link của thành phần cần cập nhật về vị trí mới, nội dung cũ của thành phần được cập nhật vẫn còn trên file nhưng không được dùng nữa (nó trở thành rác). Như vậy, sau 1 thời gian hiệu chỉnh nội dung tài liệu, file tài liệu sẽ lớn dần lên. Nếu muốn dọn dẹp các thông tin cũ dư thừa trên file Access, bạn có thể thao tác thủ công thông qua việc chọn menu Tools.Database Utilities.Compact and Repair Database.

    Nếu muốn thực hiện việc dọn dẹp tự động bằng đoạn code VB 6.0, bạn có thể tiến hành các thao tác sau:
    - chạy VB, tạo mới hay mở lại Project VB mà bạn định viết code dọn dẹp database Access.
    - chọn menu Projects.References, khi cửa sổ References hiển thị, bạn duyệt tìm và chọn hàng "Microsoft Jet and Replication Objects X.X library, với X.X >= 2.1 rồi "add" nó vào Project hiện hành.
    - viết đoạn code VB sau ở vị trí thích hợp trong module thích hợp của Project hiện hành:
    'khai báo biến đối tượng
    Dim jro As jro.JetEngine
    'tạo đối tượng JetEngine
    Set jro = New jro.JetEngine
    'gọi hàm CompactDatabase để dọn dẹp database
    jro.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\Olddata.mdb", _
    "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\Newdata.mdb;Jet OLEDB:Engine Type=4"
    Chuyên mục: Lập trình