nhphuqui > 21-09-15, 09:59 PM
maidinhdan > 21-09-15, 10:30 PM
(21-09-15, 09:59 PM)nhphuqui Đã viết: Lần trước mình có lập topic để hỏi về chủ đề khôi phục record đã xóa nhưng có thể do văn phong của mình hơi tệ nên 1 số anh em không hiểu, mình tìm được 1 bài báo có hướng dẫn vấn đề mình mong muốn. Nên mình mong anh em có thể xem hướng dẫn trong bài báo làm cái Demo giúp mình.....
tranthanhan1962 > 22-09-15, 12:57 AM
(21-09-15, 09:59 PM)nhphuqui Đã viết: Lần trước mình có lập topic để hỏi về chủ đề khôi phục record đã xóa nhưng có thể do văn phong của mình hơi tệ nên 1 số anh em không hiểu, mình tìm được 1 bài báo có hướng dẫn vấn đề mình mong muốn. Nên mình mong anh em có thể xem hướng dẫn trong bài báo làm cái Demo giúp mình.....
bvchauthanh > 22-09-15, 09:02 AM
(22-09-15, 12:57 AM)tranthanhan1962 Đã viết:(21-09-15, 09:59 PM)nhphuqui Đã viết: Lần trước mình có lập topic để hỏi về chủ đề khôi phục record đã xóa nhưng có thể do văn phong của mình hơi tệ nên 1 số anh em không hiểu, mình tìm được 1 bài báo có hướng dẫn vấn đề mình mong muốn. Nên mình mong anh em có thể xem hướng dẫn trong bài báo làm cái Demo giúp mình.....
Hình như mình có trả lời cho bạn câu hỏi này rồi nhưng nằm ở đâu thì mình không nhớ. Thôi đành post lại vậy.
Để xử lý việc này có 2 cách: Giả sử bạn có 1 table là tableA và hai form là formA và formThungRac
Cách thứ 1: Không cần tạo thêm table.
- Tạo thêm 1 field trên tableA đặt tên là ThoiGianXoa. Field ThoiGianXoa có data type là Date/Time, mặc định là Null
- Record souce của formA là select query của tableA với điều kiện giá trị của field ThoiGianXoa = is null.
- Trên formA thiết đặt properties là AllowAdditions = No, có nút xóa nhưng code nút này không phải là xóa mà là set giá trị cho field ThoiGianXoa của record = Now(). Tất nhiên khi field ThoiGianXoa của record = Now() – tức là not null nó sẽ không còn được hiển thị trên formA
- Record souce của formThungRac là select query của tableA với điều kiện giá trị của field ThoiGianXoa = is not null. Vì vậy form này chỉ show những record đã bị xóa trên formA.
- Trên formThungRac có 2 nút PhucHoi và Xoa. Nút PhucHoi có nhiệm vụ set lại giá trị của field ThoiGianXoa của record Null và ẩn nó đi, còn nút Xoa ở đây sử dụng lệnh xóa giải quyết nó luôn.
* Chú ý khi xử lý công việc khác nhớ loại trừ các record field ThoiGianXoa = is not null (vì các record này đã bị xóa).
Cách thứ 2: Tạo thêm một table tên là tableThungRac.
formA có RecordSource là tableA, formThungRac có RecordSource tableThungRac
- Tạo các SQL append query. Giả sử SQL_X sẽ append record có field ThoiGianXoa = is not null của tableA vào tableThungRac và SQL_PH sẽ append record có field ThoiGianXoa = is null của tableThungRac vào tableA.
- Lệnh của nút Xoa trên formA tuần tự như sau: set giá trị field ThoiGianXoa của record = Now() – chạy DoCmd.RunSQL SQL_X - DoCmd.RunCommand acCmdDeleteRecord để xóa record hiện hành.
- Lệnh của nút PhucHoi trên formThungRac tuần tự như sau: set giá trị field ThoiGianXoa của record = Null – chạy DoCmd.RunSQL SQL_PH – DoCmd.RunCommand acCmdDeleteRecord để xóa record hiện hành. Còn nút xóa thì del luôn record hiện hành mà không quan tâm đến lệnh khác.
Vì không bạn không có database post lên nên mình chỉ có thể hỗ trợ bấy nhiêu thôi.
Bổ sung cách thứ 3:
Trước khi xóa xử lý Msgbox hỏi kỹ, buộc người xử lý phải nghiêm túc suy nghĩ trước khi xóa, nếu có hành động sai lầm thì ráng chịu. Còn nếu user nào không được quyền xóa thì khóa luôn. AllowDeletions = False.
tranthanhan1962 > 22-09-15, 09:26 AM
(22-09-15, 09:02 AM)bvchauthanh Đã viết: Theo mình thì cách 1 nhanh gọn và hiệu quả (không cần tạo thêm table khác, chỉnh query một chút là xong, mình cũng sài cách này cho một số ứng dụng của mình, thấy cũng rất hiệu quả). Thanks!
levanchon1801 > 22-09-15, 12:24 PM
nhphuqui > 22-09-15, 05:24 PM
tranthanhan1962 > 22-09-15, 09:58 PM
(22-09-15, 05:24 PM)nhphuqui Đã viết: Đây là mẫu chương trình của mình, mọi người làm trực tiếp lên file luôn:https://drive.google.com/file/d/0BwC5fm1...sp=sharingBạn nên nghiên cứu lại cơ sở dữ liệu.