Bài 2 : Thiết kế form Đăng Nhập
Thời gian qua có rất nhiều bạn thắc mắc và viết thư hỏi tôi về thiết kế form Đăng nhập sao cho hợp lý. Có rất nhiều cách thiết kế form này. Hôm nay nhân tiện đây xin giới thiệu với các bạn một cách thiết kế form Đăng nhập bằng Unbount Form. Mục đích chính của form này là
1/ Sử dụng Unbount Form
2/ Sử dụng Dao.Recordset
3/ Khi đăng nhập thành công sẽ mở Enabled các MeNu và Enabled SubMenu Đăng Nhập
4/ Khi nhập sai mật khẩu đăng nhập sẽ có thông báo để nhập lại. Nếu sai mật khẩu đăng nhập 3 lần sẽ tự động đóng chương trình
Các bạn thiết kế form đăng nhập như hình ở bài 1. Chú ý đây là Unbount Form nên không gán RecordSouce vf ControlSouce. Tất cả đêu được điều kiển băng code VBA. Toàn bộ code của form này như sau :
Mã:
Option Compare Database
Option Explicit
Dim rs As DAO.Recordset, Dem As Integer
Private Sub cboUserID_Click()
If rs.RecordCount > 0 Then rs.MoveFirst
rs.Move Me.cboUserID.ListIndex
Me.txtTen = rs.Fields(1)
strID = rs.Fields(0)
End Sub
Private Sub cboUserID_Enter()
SendKeys "%{DOWN}"
End Sub
Private Sub cmdDangNhap_Click()
If rs.RecordCount > 0 Then rs.MoveFirst
rs.Move Me.cboUserID.ListIndex
If Me.txtPas = rs.Fields(2) Then
Forms!frmMeNu!DanhMuc.Enabled = True
Forms!frmMeNu!NhapLieu.Enabled = True
Forms!frmMeNu!BaoCao.Enabled = True
Forms!frmMeNu!QuanTri.Enabled = True
Forms!frmMeNu!Help.Enabled = True
Forms!frmMeNu!QuanLyKhoSub!cmdDangNhap.Enabled = False
DoCmd.Close
Else
MsgBox "Sai Password", vbCritical, "Quan Ly Kho"
Me.txtPas.SetFocus
Dem = Dem + 1
End If
If Dem = 3 Then DoCmd.Quit
End Sub
Private Sub cmdThoat_Click()
DoCmd.Close
End Sub
Private Sub Form_Load()
Set rs = CurrentDb.OpenRecordset("tblNhanVien", dbOpenTable)
Me.cboUserID.RowSourceType = "Value List"
AddUser
End Sub
Private Sub AddUser()
If rs.RecordCount > 0 Then rs.MoveFirst
Do Until rs.EOF
Me.cboUserID.AddItem rs.Fields(0)
rs.MoveNext
Loop
End Sub
Lưu ý : Các bạn phải định nghĩa một biến toàn cục strID ở đầu một modun bất kỳ của chương trình như thế này
Mã:
Public strID As String
Giải thích đoạn code trên như sau
1/ Khi load form sẽ set biến DAO.Recordset cho rs là table tblNhanVien. Đặt thuộc tính RowSourceType cho combobox cboUserID là Value List để nhận các Item khi AddUser
2/ Khi cboUser được click sẽ gán tên nhân viên theo UserID của combo, gán biến strID bằng giá trị hiện hành của hộp combo
3/ Khi click cmđangNhap sẽ làm các việc sau đây
3.1/ Kiểm tra Texbox Pas có trùng với Pas được đăng ký bởi cboUserID hay không
3.2/ Nếu đúng mở Enabled các Menu của MainForm, Enabled SubMenu Đăng Nhập
3.2/ Nếu sai hiển thị thông báo, tăng biến Dem lên 1. Khi biến Dem = 3(Nhập sai 3 lần) thì thoát chương trình
Các bạn có thể tùy nghi chế biến theo yêu cầu của minh
Chúc các bạn thành công