Hỏi cách tạo Form đăng nhập trong Access

Thảo luận trong 'Ứng dụng Quản trị cơ sở dữ liệu' bắt đầu bởi phuyen89, 17 Tháng mười 2009.

  1. phuyen89

    phuyen89 Active Member

    Chào mọi người.Mình có vấn đề này không biết làm như thế nào,chỉ biết làm mẫu thôi.Khi đặt PW cho Access thì dùng phần mêm phá PW chỉ có 10s là mở ra liền.Vì vật em thiết kế ra cái Form đăng nhập.
    Khi người dùng nhập đúng tên truy cập do mình quy định và bấm đúng mật khẩu.Nhấn nút OK thì:
    +nếu đúng mật khẩu và tên truy cập thì cho đăng nhập vào.
    +Nếu sai thì sau khoảng 3 lần thì tự động thoát
    Trường hợp người dùng nhập rồi nhưng không muốn nhấn OK mà nhấn CANCEL thì thoát luôn.
    File của em thiết kế như sau:

    ----------
    Lần sau bạn chú ý đặt tên đề tài cho rõ hơn nhé
     

    Các file đính kèm:

    Chỉnh sửa lần cuối bởi điều hành viên: 17 Tháng mười 2009
  2. Hai Lúa Miền Tây

    Hai Lúa Miền Tây Well-Known Member

    Trước tiên bạn nên thiết kế 1 table để ghi thông tin cho người dùng.
    Code như sau:

    Trong Module:
    Mã:
    Option Compare Database
    Public lngMyEmpID As Long
    
    Code trong form đăng nhập:

    Mã:
    Option Compare Database
    Private intLogonAttempts As Integer
    Private Sub cboEmployee_NotInList(NewData As String, _
    Response As Integer)
    MsgBox "Ban phai nhap dung 'User name' cua ban.", _
    vbInformation, Me.Caption
        Response = acDataErrContinue
    End Sub
    Private Sub cmdCancel_Click()
    On Error GoTo Err_cmdCancel_Click
        DoCmd.Quit
    Exit_cmdCancel_Click:
        Exit Sub
    Err_cmdCancel_Click:
        MsgBox Err.Description
        Resume Exit_cmdCancel_Click
    End Sub
    Private Sub Form_Open(Cancel As Integer)
    Me.cboEmployee.SetFocus
    End Sub
    Private Sub cboEmployee_AfterUpdate()
    txtstrAccess = DLookup("strAccess", "tblEmployees", _
    "[lngEmpID]=" & Me.cboEmployee.Value)
    Me!txtUserName = Me!cboEmployee.Column(1)
    Me.txtPassword.SetFocus
    End Sub
    Private Sub cmdLogin_Click()
       If IsNull(Me.cboEmployee) Or Me.cboEmployee = "" Then
                MsgBox "Ban phai chon 'User Name' cua ban.", _
                vbCritical, "User name"
                Me.cboEmployee.SetFocus
            Exit Sub
        End If
        If IsNull(Me.txtPassword) Or Me.txtPassword = "" Then
                MsgBox "Ban phai nhap mat khau cua ban vao o 'Password'.", _
                vbCritical, "Nhap mat khau"
                Me.txtPassword.SetFocus
            Exit Sub
        End If
        If Me.txtPassword.Value = DLookup("strEmpPassword", "tblEmployees", _
        "[lngEmpID]=" & Me.cboEmployee.Value) Then
            lngMyEmpID = Me.cboEmployee.Value
            MsgBox "Ban da dang nhap thanh cong...", vbInformation, "Dang nhap..."
            DoCmd.OpenForm "frmMain"
            Me.Visible = False
            Else
            MsgBox "Mat khau khong dung.  Vui long nhap lai.", _
            vbExclamation, "Sai mat khau!"
            Me.txtPassword.SetFocus
        End If
        intLogonAttempts = intLogonAttempts + 1
        If intLogonAttempts > 2 Then
            MsgBox "Mat khau khong dung, chuong trinh se thoat. Vui long lien he voi Admin.", _
            vbCritical, "Mat khau!"
            Application.Quit
        End If
    End Sub
    
    Bạn tham khảo thêm file đính kèm nhe.
     

    Các file đính kèm:

    • Login.rar
      Kích thước:
      58 KB
      Đọc:
      4,734
  3. Lixon

    Lixon New Member

    Mình cũng đang gặp khó khăn giống chủ topic, mình đã down file login về, file này rất hay, nhưng mình không biết làm cách nào để nhập nó vào phần mềm của mình cả. Bạn có thể chỉ mình cách nhập nó vào chương trình giúp mình không? Xin cám ơn
     
  4. Hai Lúa Miền Tây

    Hai Lúa Miền Tây Well-Known Member

    Trước hết bạn mở file của bạn ra trong ngăng Table click phải chuột, chọn Import... chọn file cần import, chọn gờ Table tblEmployees, Gờ Form chọn frmLogin, xong Import bình thường thôi bạn.
    Chỉnh lại code khi đăng nhập thành công thì mở form bạn muốn hiện đầu tiên, và chỉnh lại phần startup là form frmlogin.
    Chúc bạn thành công
     
  5. vanton_dk

    vanton_dk New Member

    chào các anh chị, em đang học về cơ sở dữ liệu về Access, em cũng thử làm Form đăng nhập như hướng dẫn của anh chị ở trên, em làm nó chay rồi, xong thỉnh thoảng nó lại mắc lỗi: nhập đúng mật khẩu và tên người dùng rồi mà vẫn báo lỗi dăng nhập sai. em ko hiểu mong anh chị chỉ giúp, em cảm ơn trước nhé!
    em gửi bài kèm theo
     
  6. vanton_dk

    vanton_dk New Member

    file kèm theo
    http://www.mediafire.com/?xgq3myxynn2

    em xem lại rồi. cứ đăng nhập quá 2 lần là lại bị như vậy.Em chchưa biết nhiều về VBA , hình như theo em hiểu thì cái biến lưu số lần đăng nhập sai( quá 3 lần đăng chương trình sẽ thoát ) , nó lưu cả lần đăng nhập đúng. tại em chạy Form này thử riêng mà. anh chị nào chỉ dum em cái, bí nhất thì em cho cái điều kiện này lớn hơn nữa, thì ko có lỗi này.
    intLogonAttempts = intLogonAttempts + 1
    If intLogonAttempts > 2 Then
    MsgBox "Mat khau khong dung, chuong trinh se thoat. Vui long lien he voi Admin.", _
    vbCritical, "Mat khau!"
    Application.Quit
    End If
    End Sub

    chào anh chị, cái lỗi này em đã xử lý rồi ạ. chỉ cần gán biết nhớ số lần đăng nhập, khi đăng nhập thành công =0, thì chương trình chạy ổn định ko xảy ra lỗi nữa.
     
    Chỉnh sửa lần cuối bởi điều hành viên: 26 Tháng tư 2010
  7. nguyentrungse7en

    nguyentrungse7en New Member

    Nhưng cậu ơi, chỉnh code cho phù hợp với form bạn muốn mở sau khi đăng nhập thành công ở chôc nào thế?
     
  8. phatnq2002

    phatnq2002 New Member

    Ở đây tôi hơi "phân vân" một cái là theo thông lệ, password là có phân biệt hoa thường. Theo cách của bạn, thì bạn dùng hàm DLookup để tìm dò password. Nhưng mặc định, nếu bạn Option Compare Database là nó sẽ coi HOA như thường. Như vậy là chưa ổn.
    Bạn nên đổi lại là Option Compare Binary.

    Vấn đề tiếp theo là để password "mộc" như thế vẫn hơi "lộ liễu", bởi vì nếu tôi sử dụng một cái soft nào đó để tôi mở file Access ra, xem cái table là biết password liền, đúng không?

    Password khi lưu cần phải mã hóa. Khi so sánh cũng nên so sánh trên các password đã mã hóa, như vậy mới tạm ổn.
     
  9. nthienthbk53

    nthienthbk53 New Member

    Chào các anh chị, em cũng đnag học về access. Nhưng liệu em muốn tạo mục đăng nhập mà không dung VBA có được không anh chị ơi. Vì cái đo em chưa học nah. Anh chị nào giúp em với. em cám ơn nhiều
     
  10. ckc2006

    ckc2006 New Member

    Với code trên nếu như mình muốn khi login thành công vào form main thì sẽ có menu bar kèm theo và mình sẽ phân quyền theo strAccess để menubar sẽ mờ đi một vài chức năng theo yêu cầu. Nhờ các bạn gợi ý cách làm.

    Thank
     
  11. Hai Lúa Miền Tây

    Hai Lúa Miền Tây Well-Known Member

    2.) Đây là UDF mã hoá chuổi:

    Mã:
    Public Function Encode(vText As String)
        On Error GoTo ErrHandler
        Dim CurSpc As Integer
        Dim varLen As Integer
        Dim varChr As String
        Dim varFin As String
        varLen = Len(vText)
        Do While CurSpc <= varLen
            DoEvents
            CurSpc = CurSpc + 1
            varChr = Mid(vText, CurSpc, 1)
            Select Case varChr
                'lower case
                Case "a"
                    varChr = "coe"
                Case "b"
                    varChr = "wer"
                Case "c"
                    varChr = "ibq"
                Case "d"
                    varChr = "am7"
                Case "e"
                    varChr = "pm1"
                Case "f"
                    varChr = "mop"
                Case "g"
                    varChr = "9v4"
                Case "h"
                    varChr = "qu6"
                Case "i"
                    varChr = "zxc"
                Case "j"
                    varChr = "4mp"
                Case "k"
                    varChr = "f88"
                Case "l"
                    varChr = "qe2"
                Case "m"
                    varChr = "vbn"
                Case "n"
                    varChr = "qwt"
                Case "o"
                    varChr = "pl5"
                Case "p"
                    varChr = "13s"
                Case "q"
                    varChr = "c%l"
                Case "r"
                    varChr = "w$w"
                Case "s"
                    varChr = "6a@"
                Case "t"
                    varChr = "!2&"
                Case "u"
                    varChr = "(=c"
                Case "v"
                    varChr = "wvf"
                Case "w"
                    varChr = "dp0"
                Case "x"
                    varChr = "w$-"
                Case "y"
                    varChr = "vn&"
                Case "z"
                    varChr = "c*4"
                'numbers
                Case "1"
                    varChr = "aq@"
                Case "2"
                    varChr = "902"
                Case "3"
                    varChr = "2.&"
                Case "4"
                    varChr = "/w!"
                Case "5"
                    varChr = "|pq"
                Case "6"
                    varChr = "ml|"
                Case "7"
                    varChr = "t'?"
                Case "8"
                    varChr = ">^s"
                Case "9"
                    varChr = "<s^"
                Case "0"
                    varChr = ";&c"
                'caps
                Case "A"
                    varChr = "$)c"
                Case "B"
                    varChr = "-gt"
                Case "C"
                    varChr = "|p*"
                Case "D"
                    varChr = "1" & Chr(34) & "r"
                Case "E"
                    varChr = "c>:"
                Case "F"
                    varChr = "@+x"
                Case "G"
                    varChr = "v^a"
                Case "H"
                    varChr = "]eE"
                Case "I"
                    varChr = "aP0"
                Case "J"
                    varChr = "{=1"
                Case "K"
                    varChr = "cWv"
                Case "L"
                    varChr = "cDc"
                Case "M"
                    varChr = "*,!"
                Case "N"
                    varChr = "fW" & Chr(34)
                Case "O"
                    varChr = ".?T"
                Case "P"
                    varChr = "%<8"
                Case "Q"
                    varChr = "@:a"
                Case "R"
                    varChr = "&c$"
                Case "S"
                    varChr = "WnY"
                Case "T"
                    varChr = "{Sh"
                Case "U"
                    varChr = "_%M"
                Case "V"
                    varChr = "}'$"
                Case "W"
                    varChr = "QlU"
                Case "X"
                    varChr = "Im^"
                Case "Y"
                    varChr = "l|P"
                Case "Z"
                    varChr = ".>#"
                'Special characters
                Case "!"
                    varChr = "\" & Chr(34) & "]"
                Case "@"
                    varChr = "cY,"
                Case "#"
                    varChr = "x%B"
                Case "$"
                    varChr = "a*v"
                Case "%"
                    varChr = "'&T"
                Case "^"
                    varChr = ";%R"
                Case "&"
                    varChr = "eG_"
                Case "*"
                    varChr = "Z/e"
                Case "("
                    varChr = "rG\"
                Case ")"
                    varChr = "]*F"
                Case "_"
                    varChr = "@B*"
                Case "-"
                    varChr = "+Hc"
                Case "="
                    varChr = "&|D"
                Case "+"
                    varChr = "(:#"
                Case "["
                    varChr = "SlW"
                Case "]"
                    varChr = "'QB"
                Case "{"
                    varChr = "{D>"
                Case "}"
                    varChr = "+c%"
                Case ":"
                    varChr = "(s:"
                Case ";"
                    varChr = "^a("
                Case "'"
                    varChr = "16."
                Case Chr(34)
                    varChr = "s.*"
                Case ","
                    varChr = "&?W"
                Case "."
                    varChr = "GPQ"
                Case "<"
                    varChr = "SK*"
                Case ">"
                    varChr = "RL^"
                Case "/"
                    varChr = "40C"
                Case "?"
                    varChr = "?#9"
                Case "\"
                    varChr = "_?/"
                Case "|"
                    varChr = "(_@"
                Case " "
                    varChr = "=#B"
            End Select
            varFin = varFin & varChr
            DoEvents
        Loop
        Encode = varFin
        Exit Function
    ErrHandler:
        Dim ErrNum, ErrDesc, ErrSource
        ErrNum = Err.Number
        ErrDesc = Err.Description
        ErrSource = Err.Source
        MsgBox "Error# = " & ErrNum & vbCrLf & "Description = " & ErrDesc & vbCrLf & "Source = " & ErrSource, vbCritical + vbOKOnly, "Program Error!"
        Err.Clear
        Exit Function
    End Function
    
    
    2.) UDF chuyển chuổi đã mã hoá thành chuổi bình thường.

    Mã:
    Public Function DeCode(vText As String) As String
        On Error GoTo ErrHandler
        Dim CurSpc As Integer
        Dim varLen As Integer
        Dim varChr As String
        Dim varFin As String
        CurSpc = CurSpc + 1
        varLen = Len(vText)
        Do While CurSpc <= varLen
            DoEvents
            varChr = Mid(vText, CurSpc, 3)
            Select Case varChr
                'lower case
                Case "coe"
                    varChr = "a"
                Case "wer"
                    varChr = "b"
                Case "ibq"
                    varChr = "c"
                Case "am7"
                    varChr = "d"
                Case "pm1"
                    varChr = "e"
                Case "mop"
                    varChr = "f"
                Case "9v4"
                    varChr = "g"
                Case "qu6"
                    varChr = "h"
                Case "zxc"
                    varChr = "i"
                Case "4mp"
                    varChr = "j"
                Case "f88"
                    varChr = "k"
                Case "qe2"
                    varChr = "l"
                Case "vbn"
                    varChr = "m"
                Case "qwt"
                    varChr = "n"
                Case "pl5"
                    varChr = "o"
                Case "13s"
                    varChr = "p"
                Case "c%l"
                    varChr = "q"
                Case "w$w"
                    varChr = "r"
                Case "6a@"
                    varChr = "s"
                Case "!2&"
                    varChr = "t"
                Case "(=c"
                    varChr = "u"
                Case "wvf"
                    varChr = "v"
                Case "dp0"
                    varChr = "w"
                Case "w$-"
                    varChr = "x"
                Case "vn&"
                    varChr = "y"
                Case "c*4"
                    varChr = "z"
                'numbers
                Case "aq@"
                    varChr = "1"
                Case "902"
                    varChr = "2"
                Case "2.&"
                    varChr = "3"
                Case "/w!"
                    varChr = "4"
                Case "|pq"
                    varChr = "5"
                Case "ml|"
                    varChr = "6"
                Case "t'?"
                    varChr = "7"
                Case ">^s"
                    varChr = "8"
                Case "<s^"
                    varChr = "9"
                Case ";&c"
                    varChr = "0"
                'caps
                Case "$)c"
                    varChr = "A"
                Case "-gt"
                    varChr = "B"
                Case "|p*"
                    varChr = "C"
                Case "1" & Chr(34) & "r"
                    varChr = "D"
                Case "c>:"
                    varChr = "E"
                Case "@+x"
                    varChr = "F"
                Case "v^a"
                    varChr = "G"
                Case "]eE"
                    varChr = "H"
                Case "aP0"
                    varChr = "I"
                Case "{=1"
                    varChr = "J"
                Case "cWv"
                    varChr = "K"
                Case "cDc"
                    varChr = "L"
                Case "*,!"
                    varChr = "M"
                Case "fW" & Chr(34)
                    varChr = "N"
                Case ".?T"
                    varChr = "O"
                Case "%<8"
                    varChr = "P"
                Case "@:a"
                    varChr = "Q"
                Case "&c$"
                    varChr = "R"
                Case "WnY"
                    varChr = "S"
                Case "{Sh"
                    varChr = "T"
                Case "_%M"
                    varChr = "U"
                Case "}'$"
                    varChr = "V"
                Case "QlU"
                    varChr = "W"
                Case "Im^"
                    varChr = "X"
                Case "l|P"
                    varChr = "Y"
                Case ".>#"
                    varChr = "Z"
                'Special characters
                Case "\" & Chr(34) & "]"
                    varChr = "!"
                Case "cY,"
                    varChr = "@"
                Case "x%B"
                    varChr = "#"
                Case "a*v"
                    varChr = "$"
                Case "'&T"
                    varChr = "%"
                Case ";%R"
                    varChr = "^"
                Case "eG_"
                    varChr = "&"
                Case "Z/e"
                    varChr = "*"
                Case "rG\"
                    varChr = "("
                Case "]*F"
                    varChr = ")"
                Case "@B*"
                    varChr = "_"
                Case "+Hc"
                    varChr = "-"
                Case "&|D"
                    varChr = "="
                Case "(:#"
                    varChr = "+"
                Case "SlW"
                    varChr = "["
                Case "'QB"
                    varChr = "]"
                Case "{D>"
                    varChr = "{"
                Case "+c%"
                    varChr = "}"
                Case "(s:"
                    varChr = ":"
                Case "^a("
                    varChr = ";"
                Case "16."
                    varChr = "'"
                Case "s.*"
                    varChr = Chr(34)
                Case "&?W"
                    varChr = ","
                Case "GPQ"
                    varChr = "."
                Case "SK*"
                    varChr = "<"
                Case "RL^"
                    varChr = ">"
                Case "40C"
                    varChr = "/"
                Case "?#9"
                    varChr = "?"
                Case "_?/"
                    varChr = "\"
                Case "(_@"
                    varChr = "|"
                Case "=#B"
                    varChr = " "
            End Select
            varFin = varFin & varChr
            CurSpc = CurSpc + 3
            DoEvents
        Loop
        DeCode = varFin
        Exit Function
    ErrHandler:
        Dim ErrNum, ErrDesc, ErrSource
        ErrNum = Err.Number
        ErrDesc = Err.Description
        ErrSource = Err.Source
        MsgBox "Error# = " & ErrNum & vbCrLf & "Description = " & ErrDesc & vbCrLf & "Source = " & ErrSource, vbCritical + vbOKOnly, "Program Error!"
        Err.Clear
        Exit Function
    End Function
    Như vậy bạn có thể sử dụng 2 UDF này để thực hiện yêu cầu của bạn.

    Lưu ý: Nó không hổ trợ kiểu gõ có dấu. Nếu muốn chữ có dấu bạn tự thêm nhé.
     
    Lần chỉnh sửa cuối: 27 Tháng mười hai 2010
  12. vanrongvn

    vanrongvn New Member

    Với Formlogin đó thì OK rồi
     
    Lần chỉnh sửa cuối: 17 Tháng một 2011
  13. vanrongvn

    vanrongvn New Member

  14. dinhbacvip

    dinhbacvip New Member

    pass là gì thế bạn??
     
  15. dailykem

    dailykem New Member

    login kiểu này khó sử dụng nhỉ?
    chẳng hiện ra login luôn mà hiện ra toàn số mã gì đó
    acc admin, pass admin
     
  16. lehoanganhduc

    lehoanganhduc New Member

    Hỏi về login

    Xin cho hỏi, nếu tạo bàng chứa Password như vậy thì người nào đó mở được bảng này thì biết hết password sao?
     
  17. Hai Lúa Miền Tây

    Hai Lúa Miền Tây Well-Known Member

    Đây chỉ là ví dụ, còn việc sử dụng thì tùy biến, ví dụ mã hóa pass + csdl... Cho dù có mở cũng khó biết được.
     
  18. dark37

    dark37 New Member

    mình có frm như sau .. sao mình ko thể liên kết tới access mong các bạn giúp mình sớm , mình đang cần ... lúc mình chạy chương trình bằng vb .. nó ko hiện frm ra ..


    public partial class Login : DevComponents.DotNetBar.Office2007RibbonForm
    {
    public Login()
    {
    InitializeComponent();
    }
    #region "Biến cục bộ trong form"
    public OleDbConnection objConnect;
    private DataTable objDataTable;
    private DataTable objDataTable1;


    #endregion
    #region "Tạo và hủy kết nối với database"
    private void ketnoidata()
    {
    String chuoikn = "Provider = Microsoft.Jet.OLEDB.4.0 ;" +
    "Data Source = Nhom8_CNTT 16GT" + Application.StartupPath + @"\C:\Users\NHAT-IT\Desktop\Nhom 8\Nhom8_CNTT 16GT\qlxm.mdb;";
    objConnect = new OleDbConnection(chuoikn);
    objConnect.Open(); // Mở kết nối
    }
    private void huyketnoidata()
    {
    objConnect.Close(); // Đóng kết nối
    objConnect.Dispose(); // Giải phóng tài nguyên
    objConnect = null; // Hủy đối tượng
    }
    #endregion
    public bool CheckLogin(string name, string pass)
    {
    String chuoikn = "Provider = Microsoft.Jet.OLEDB.4.0 ;" +
    "Data Source = Nhom8_CNTT 16GT" + Application.StartupPath + @"\C:\Users\NHAT-IT\Desktop\Nhom 8\Nhom8_CNTT 16GT\qlxm.mdb;";
    objConnect = new OleDbConnection(chuoikn);
    // Tạo Command
    OleDbCommand cmd = new OleDbCommand("select * from Dang_Nhap where UserName='" + name + "' and PassWord='" + pass + "'", objConnect);
    objConnect.Open(); // Mở kết nối
    OleDbDataReader dr = cmd.ExecuteReader();
    if (dr.Read())
    {
    objConnect.Close();
    return true;
    }
    objConnect.Close();
    return false;
    }


    private void buttonX2_Click(object sender, EventArgs e)
    {
    this.Close();
    }


    private void buttonX1_Click(object sender, EventArgs e)
    {
    if (CheckLogin(txt_user.Text, txt_pass.Text))
    {
    main frmmain = new main();
    frmmain.Show();

    }
    else
    MessageBox.Show("Đăng nhập thất bại", "Lỗi", MessageBoxButtons.OK, MessageBoxIcon.Warning);
    }
    }
    }
     
  19. nguoiconxunui

    nguoiconxunui New Member

    Nhảm hả, cái này người ta viết bằng C# , dùng vb chạy thế nào được mà form thì phải tạo chứ có code không thì làm ăn kiểu gì
    Đó là chưa kể người ta dùng Components tùm lum kia,
     
  20. tvn_hut

    tvn_hut New Member

    Áp dụng 2 UDF này như nào ad. Có phải chỉ cần copy vào modul là dùng được phải không? Có cần gọi 2 hàm này ra không? Mình biết phải vận dụng 2 UDF này như nào mong add chỉ giúp. Thank in advance
     

Chia sẻ trang này