Các record trong table quá nhiều nên phần mềm chạy khá chậm làm sao để cho phần mềm chạy nhanh?
Tinhsi 3005
Hồi âm xin gửi về: vitinh@vnexpress.net
Hồi âm:
Chắc bạn đang nói về một cơ sở dữ liệu (như Access chẳng hạn). Bạn không thể xóa một record (bản ghi) đi theo kiểu Recycbin. Tuy nhiên, bạn có thể tạo cho chúng một thuộc tính (ví dụ tạo thêm một trường là "OLD" và cho giá trị của trường này là "1" và tiếp theo, bạn tạo ra lệnh là nếu cứ thấy bản ghi nào mà trường "OLD" có giá trị là 1 thì không hiện ra).
Hoặc bạn có thể lưu file dữ liệu đó ra một bản khác, rồi xóa các bản ghi cũ ở file bạn đang dùng đi.
Dong Ngo
Không rõ bạn đang nói đến Access hay Foxpro. Tuy nhiên, nếu bạn sử dụng Access thì bạn có thể làm như sau:
Tạo ra một table “thùng rác”, đặt tên kiểu như tblRecycle chẳng hạn, với các Field tương tự như table chứa dữ liệu cần xoá của bạn và thêm các Field chứa một vài thông tin phụ khác phục vụ cho việc phục hồi và tìm kiếm, ví dụ như ngày giờ xoá (Kiểu datetime, giá trị default Value = Now()), vị trí cũ trong bảng dữ liệu...
Khi xảy ra sự kiện xoá Record, bạn cần viết code chặn sự kiện Form_Delete và viết đoạn code có chứa câu lệnh truy vấn Append để update các thông tin của Record sẽ bị xoá vào bảng tblRecycle rồi mới cho phép sự kiện Form_Delete tiếp tục tiến hành. Như vậy với động tác này khi người dung nhấn nút Delete để xoá Record, các dữ liệu sẽ được chuyển vào lưu tại tblRecycle để lưu trữ như Recycle Bin của Windows.
Khi muốn phục hồi lại Record đã xoá này, bạn cần thiết kế Form, ví dụ như frmRecycle, lấy dữ liệu nguồn từ tblRecycle và thông qua một vài truy vấn cho phép tìm nhanh chóng Record cần được phục hồi. Khi người dùng cần phục hồi Record, họ sẽ nhấn vào một nút được bạn thiết kế sẵn. Nút này sẽ thực hiện đoạn code đọc thông tin từ Record được chọn để phục hồi và lại thực hiện lệnh Append ngược lại bảng dữ liệu của bạn để phục hồi dữ liệu cho bạn vào Bảng dữ liệu chính.
Để đảm bảo đúng thứ tự của các Record sau động tác xoá-lưu Recycle-phục hồi như chưa từng xảy ra động tác xoá, bạn cần thiết kế thêm một Field đại khái như Số thứ tự (AutoNumber hoặc tương tự). Mỗi một Record khi được nhập vào sẽ được tự động gán một số thứ tự tăng dần. Khi xoá Record và chuyển vào Recycebin, Field Số thứ tự này cũng sẽ được lưu trữ để khi phục hồi Fỉeld này sẽ được sắp xếp lại về đúng vị trí của nó ban đầu.
Trường hợp bạn sử dụng Forpro thì về giải pháp cũng tương tự như vậy, sử dụng câu lệnh cụ thể của Foxpro nhưng tính chất của lệnh thì giống lệnh của Acess.
Trần Ngọc Dũng