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

    Access và vấn đề lưu trữ

    Câu hỏi :
    1. Khi chạy tập tin Access, mở 1 query hay xóa một số record của table thì thấy tập tin Access có kích thước tăng lên rất nhiều. Khi chọn chức năng Compact on Close trong thẻ General của Option ... thì sau khi đóng tập tin kích thước giảm đi rất nhiều. Xin hướng dẫn viết đoạn code làm nhiệm vụ giống như Compact on Close.

    2. Có cách nào để ngăn không cho người khác lấy các table trong tập tin Access thông qua chức năng Import của Access? (Loại trừ việc đặt password cho database, cách này rất phiền bởi chỉ có người biết mật khẩu mới mở được).

    3. Xin hướng dẫn đoạn code VB6 truy cập dữ liệu trong tập tin Access (2003) có mật khẩu bảo vệ.

    Trả lời :
    1. 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 nó 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ể chọn 1 trong 3 phương án sau:

    - thao tác thủ công tại thời điểm xác định thông qua việc chọn menu Tools.Database Utilities.Compact and Repair Database trên file database đang làm việc.
    - nhờ Access tự động Compact mỗi lần đóng file Access nào đó. Để khai báo chức năng này cho file Access nào đó, bạn hãy chạy Access, mở file Access của mình, vào menu.
    - thực hiện việc dọn dẹp tự động bằng đoạn code VB 6.0 như sau:
    '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"
    Bạn hãy tham khảo đoạn code trên rồi đặt chúng trong 1 macro trong Access và tạo 1 MenuItem hay 1 button trên Toolbar nào đó để kích hoạt macro khi cần thiết. Lưu ý, chỉ nên Compact file Access khi thật cần thiết, không nên thực hiện Compact tự động và thường xuyên vì sẽ tốn nhiều thời gian chờ đợi, nhất là khi file có kích thước khá lớn.

    2. Biện pháp bảo mật dữ liệu thông thường nhất là dùng account hay password, ai biết thông tin về account hay password thì truy xuất được dữ liệu, ai không biết thì không truy xuất được. Access cung cấp cơ chế password để bảo vệ việc truy xuất thông tin trong từng file Access. Cần lưu ý bất kỳ biện pháp nào cũng có 2 mặt của nó: mặt tốt và mặt xấu.

    3. Nếu file Access của bạn có dùng password để bảo vệ lúc mở file thì khi lập trình truy xuất file Access này, bạn phải dùng thông số "PWD=yourpass" trong chuỗi ConnectionString của đối tượng Connection kết hợp với file Access mà bạn cần truy xuất. Nếu bạn muốn đoạn code truy xuất file Access của bạn có tính tổng quát hóa cao, bạn nên khai báo một DSN kết hợp với file Access. Trong cửa sổ khai báo DSN, bạn nên khai báo thông số password luôn, trong trường hợp này, chuỗi ConnectionString mà bạn dùng trong lập trình chỉ chứa tên DSN kết hợp với file Access, chứ không hề chứa thông tin pasword.
    Chuyên mục: Ứng dụng văn phòng