Avatar billede maria.cand Nybegynder
13. april 2004 - 13:14 Der er 10 kommentarer og
2 løsninger

login modul

Jeg har følgende login modul som Thomas fra Makeit easy har hjulpet mig med. Prblemet er at denne er baseret på en kombinationsboks - hvor man vælger brugernavn. jeg vil gene have lavet det sådan, at man blot skal indtaste fornavn og password i stedet. altså ingen kombinationsboks og ingen medarbejder id!!

Option Compare Database
Option Explicit

Public MedarbejderId As Long

Function CheckBruger(BrugerID As Long, Password As String) As Boolean

    Dim db As Database, rs As DAO.Recordset

    On Error GoTo CheckBruger_Error
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Medarbejder", dbOpenSnapshot)

    rs.FindFirst "[MedarbejderID]=" & BrugerID & " AND [Password]='" & Password & "'"
    If rs.NoMatch Then
        CheckBruger = False
    Else
        CheckBruger = True
        MedarbejderId = BrugerID
    End If

    rs.Close
    Set rs = Nothing
   
    Exit Function

CheckBruger_Error:
MsgBox Error$

End Function


Public Function GetProgamname()
    GetProgamname = "TimeReg"
End Function


Public Function GetMedarbejderID()
    GetMedarbejderID = MedarbejderId
End Function
13. april 2004 - 13:19 #1
Maria, har du prøvet at downloade den seneste Login-eksempel, som jeg skrev til dig forleden. Der er koden ændre, således at den ikke bruger komboboks, men blot tekstboks.

CheckBruger-funktionen ser nu sådan ud:
Function CheckBruger(Login As String, password As String) As Levels

    Dim db As Database, rs As DAO.Recordset

    On Error GoTo CheckBruger_Error
    Set db = CurrentDb
    Set rs = db.OpenRecordset("appUsers", dbOpenSnapshot)

    rs.FindFirst "[Username]='" & Login & "' AND [Password]='" & password & "'"
    If rs.NoMatch Then
        CheckBruger = False
    Else
        CheckBruger = rs!SecurityLevel
        Username = Login
        SecurityLevel = rs!SecurityLevel
    End If

    rs.Close
    Set rs = Nothing
   
    Exit Function

CheckBruger_Error:
MsgBox err.description

End Function
Avatar billede maria.cand Nybegynder
13. april 2004 - 14:00 #2
Thomas problemet er jo, at jeg ikke er så skarp;-) Jeg har forsøgt at sætte den ind i databasen uden held!! Derfor ville jeg gerne omskrive den så den passer til min!!
13. april 2004 - 14:07 #3
ok :o)

Hvis tabellen stadig hedder "Medarbejder", så mangler jeg stadig at vide hvad de 2 felter "Initialer" og "Password" hedder i tabellen. Men hvis du selv kan udskifte "Medarbejder", "Initialer" og "Password" i nedenstående kode, så skulle den være der:

Function CheckBruger(Login As String, password As String) As Boolean

    Dim db As Database, rs As DAO.Recordset

    On Error GoTo CheckBruger_Error
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Medarbejder", dbOpenSnapshot)

    rs.FindFirst "[Initialer]='" & Login & "' AND [Password]='" & password & "'"
    If rs.NoMatch Then
        CheckBruger = False
    Else
        CheckBruger = True
        Username = Login
    End If

    rs.Close
    Set rs = Nothing
   
    Exit Function

CheckBruger_Error:
MsgBox err.description

End Function
13. april 2004 - 14:08 #4
PS: Du skal kun udskrifte den første [Password] i koden (hvis feltet altså hedder noget andet i tabellen - f.eks. "Adgangskode")
Avatar billede maria.cand Nybegynder
13. april 2004 - 14:28 #5
hmm jeg får det ikke til at virke - Den hedder forsat password - men i stedet for intialer må det jo være fornavn - Det er ihvertfald fornavnet de skal skrive ind. Men jeg har lavet et felt der hedder initialer..
13. april 2004 - 14:33 #6
okay, lad os bare prøve med fornavn.
Så ser funktionen foreløbg således ud:
Function CheckBruger(Login As String, password As String) As Boolean

    Dim db As Database, rs As DAO.Recordset

    On Error GoTo CheckBruger_Error
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Medarbejder", dbOpenSnapshot)

    rs.FindFirst "[Fornavn]='" & Login & "' AND [Password]='" & password & "'"
    If rs.NoMatch Then
        CheckBruger = False
    Else
        CheckBruger = True
        Username = Login
    End If

    rs.Close
    Set rs = Nothing
   
    Exit Function

CheckBruger_Error:
MsgBox err.description

End Function

Herefter skal du nok også ændre koden på selve Login-formularens OK-knap:

...
If CheckBruger(Me!Fornavn, Me!password) Then
...

Dette kræver selvfølgelig, at den første tekstboks på formularen hedder "Fornavn".
Avatar billede maria.cand Nybegynder
13. april 2004 - 14:35 #7
Public Function GetMedarbejderID()
    GetMedarbejderID = MedarbejderId
End Function

den jeg har her skal den ikke ændres?
Avatar billede maria.cand Nybegynder
13. april 2004 - 14:38 #8
UserName = Login

den giver en fejl her i modulet!!
13. april 2004 - 15:03 #9
GetMedarbejderID skal vit bare slettes (hvis du bruger den andre steder, skal der rettes der også)

"UserName = Login"!?? Den sætning, kan jeg ikke huske...hvor står den?

Kan du evt indsætte hele koden her?
Avatar billede maria.cand Nybegynder
13. april 2004 - 15:11 #10
jep prøver lige:

Modul = Option Compare Database
Option Explicit


Function CheckBruger(Login As String, Password As String) As Boolean

    Dim db As Database, rs As DAO.Recordset

    On Error GoTo CheckBruger_Error
    Set db = CurrentDb
    Set rs = db.OpenRecordset("Medarbejder", dbOpenSnapshot)

    rs.FindFirst "[Fornavn]='" & Login & "' AND [Password]='" & Password & "'"
    If rs.NoMatch Then
        CheckBruger = False
    Else
        CheckBruger = True
        UserName = Login
    End If

    rs.Close
    Set rs = Nothing
   
    Exit Function

CheckBruger_Error:
MsgBox Err.Description

End Function



Public Function GetProgamname()
    GetProgamname = "TimeReg"
End Function


Login = Option Compare Database  'Anvend databasens rækkefølge til strengsammenligninger.
Option Explicit

'***********************************************************************************************
'  Denne kode er udviklet af Thomas Jepsen, 2000
'  Dele eller hele koden må frit benyttes i applikationer, så længe kildeangivelse er bevaret
'  Besøg www.makeiteasy.dk eller skriv til tj@makeiteasy.dk,
'  hvis der opstår fejl eller spørgsmål, eller du har brug for yderligere assistance
'***********************************************************************************************


Private Sub Cancel_Click()

    Dim svar As Integer

    svar = MsgBox("Vil du lukke hele systemet!" & vbNewLine & vbNewLine & "Er du sikker?", vbQuestion + vbYesNo, "Afslut?")
    If svar = vbYes Then
        DoCmd.Quit
    Else
        Me.Fornavn.SetFocus
    End If

End Sub

Private Sub Form_Load()
    On Error Resume Next
    Me!Programname = GetProgamname
End Sub

Private Sub Fornavn_KeyPress(KeyAscii As Integer)
    KeyAscii = Asc(UCase(Chr$(KeyAscii)))
End Sub

Private Sub OK_Click()

    Static Tries As Integer
    On Error GoTo ok_click_fejl


    If Not IsNull(Me!Password) And Not IsNull(Me!Fornavn) Then
      If CheckBruger(Me!Fornavn, Me!Password) Then
            DoCmd.Close acForm, Me.Name
            DoCmd.OpenForm "Hovedmenu"
        Else
            MsgBox "Der er indtastet forkert password!", vbCritical, "Fejl!"
            Me!Password = ""
            Me!Password.SetFocus
            Tries = Tries + 1
            Exit Sub
        End If
    Else
        If IsNull(Me!Fornavn) Then
            MsgBox "Brugernavn mangler!", vbCritical, "Fejl!"
            Me!Fornavn.SetFocus
        End If
    End If
    Exit Sub
ok_click_fejl:
    If Err <> 94 Then
        MsgBox Error$ & Chr(10) & Str(Err)
    End If
    Resume Next
End Sub

Private Sub password_Change()
    Me!OK.Enabled = True
    Me!OK.Default = True
End Sub
13. april 2004 - 15:25 #11
Username er en public variabel, som skal være erklæret i et modul. Den bruges til at kunne 'huske' hvem der er logget på.

Så hvis du i et eller andet modul skiver:
Public Username as String

i toppen af modulet, så skulle det virke.
Avatar billede maria.cand Nybegynder
13. april 2004 - 15:35 #12
Perfekt thomas virker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester