Thấy các bạn trao đổi về chương trình thiết kế phân quyền sung quá mình cũng tham gia một tí.
Đây phần mềm mình đã thiết kế cho 1 doanh nghiệp. Mình chỉ chừa lại đối tượng liên quan đến phần phân quyền để các bạn tiện việc tham khảo.
Nhìn chung thì cũng không có gì khác biệt lắm so với demo của bạn Duy Tuấn. chỉ thêm một vài râu ria để hỗ trợ thêm. Để dễ dàng “cảm” được ứng dụng mình sẽ đưa ra một vài phân tích:
1/ Khác với ứng dụng của bạn Duy Tuấn. Hầu như tất cả các code xử lý phân quyền mình đều đặt lên 1 Form duy nhất là F_Login. Form này có record source là table DANHSACHNHANVIEN. Căn cứ vào Quyền sử dụng được xử lý qua giá trị của Value List của Combobox trên form F_DANHSACHNHANVIEN để xử lý phân quyền trên module code của form F_Login. Khi vào chương trình thì form F_Login được open sau đó chỉ bị hidden đi chứ không bao giờ được close để quản lý các trường hợp phân quyền khác. Số lần nhập sai mật khẩu bị giới hạn (trong ứng dụng của mình là 3 lần, các bạn có thể chỉnh sửa tùy ý)
2/Các user của F_Login có quyền tự thay đổi pass của chính mình (không thay đổi pass của user khác được ngoại trừ user có QUYENSUDUNG = 1 / Quản trị chương trình). Các bạn có thể thiết đặt lại tùy ý
3/User Quản trị chương trình quản lý quyền sử dụng của các user khác thông qua field QUYENSUDUNG và DANGKYMATMA trên form F_DANHSACHNHANVIEN. Các control có control source là 2 field này chỉ xuất hiện khi quyền đăng nhập trên F_Login là 1.
4/Khi thay đổi quyền sử dụng. Menu bar sẽ thay đổi sự xuất hiện của các command control để bảo đảm quyền truy cập vào các form, report của từng quyền. hoặc có thể viết code trực tiếp lên các form cụ thể thông qua event Form_Open, Form_Load hoặc event cả control nào đó của nó xử lý lệnh thông qua tham số F_Login. QUYENSUDUNG.Value
5. Sử dụng code Form_Load trên Form F_Login khống chế thời gian sử dụng (vụ này dành khi giao phần mềm hoàn chỉnh mà đối tác chưa giao hết tiền hoặc quảng cáo dùng thử
)
Mã:
Private Sub Form_Load()
If Date >= #4/4/2020# Then
DoCmd.Quit
End If
Ngoài ra trên Form F_Login có label TENCONGTY Nhằm so sánh với giá trị field DonviCT của table 01COQUAN nhằm quản lý bản quyền. Nếu thay đổi tên công ty (Tên công ty sẽ được đặt lên tiêu đề các report) phần mềm sẽ bị khóa.
6/Xử lý mật khẩu khóa phím shift trong code để không cho kẻ lạ mặt vào database.
7/ Vì ứng dụng này được trích từ phần mềm kế toán thương mại của mình nên không có user Guest. Bạn nào thích thì thiết đặt thêm. Mình không đặt pass VBA vì khi bàn giao ứng dụng chỉ giao tập tin MDE. Tập tin lưu giữ MDB đặt pass chỉ mất công thêm mà hiện giờ các phần mềm gỡ pass cũng nhiều nên có đặt pass cũng vô hiệu.
*Các mật khẩu của ứng dụng:
Mật khẩu các user : 1111
Mật khẩu mở khóa phím shift: thuthuataccess (ứng dụng post lên mình chưa khóa shift)
Mong rằng ứng dụng này sẽ hỗ trợ phần nào cho các bạn
Demo