toevoeging aan mijn inlog scherm

Status
Niet open voor verdere reacties.

munchy

Gebruiker
Lid geworden
25 jan 2009
Berichten
27
Beste,

Ik ben al een tijdje bezig met het probleem dat ik graag wil weten wie er in mijn database aanwezig is.
Nu werkt de database via een citrix omgeving waarmee ik met de standaard comando's zoals environ en LDB viewer alleen machine namen te zien krijg.
Ik ben hier al even mee bezig en ben nu zo ver dat ik een inlog scherm heb toegevoegd.
Gebruikers moeten nu inloggen.
Ik heb hiervoor een tabel genaamd tbl_users.
In deze tabel staat de user_id, passwords, password_date en nog wat andere gegevens die ik niet gebruikt zoals email adres.
Ik heb vooraf alle gebruikers ingevuld en een standaard password aangemaakt.
Als een gebruiker de eerste keer inlogd krijgt hij de melding dat zijn (standaard)password is verlopen en dat hij zelf een ander password moet invullen.
Als dit is gedaan komt hij bij het beginscherm.
Alles werkt zoals het moet maar ik wil graag dat de tabel, of een andere tabel ook bijhoud wie er wanneer in de database zit.
Een login/logoff datum/tijd dus.
De code die ik gebruik heb ik van internet en is eigenlijk iets te uitgebreid. Deze maakt het mogelijk dat verschillende gebruikers afhankelijk van hun access level doorverwezen worden
naar verschillende switchboarden. Dit hoeft in mijn geval niet. Iedereen wordt doorverwezen naar hetzelfde start formulier. In mijn geval heet dit "front".
Ik zal hieronder de code die ik gebruik zetten.
O ja, even voor Octafish. Ik meen me te herinneren dat jij een trucje had om er voor te zorgen dat mensen altijd de database correct afsluiten. Kun je dit ook nog een keer met
mij delen?

Alvast bedankt allemaal en de beste wensen voor 2015 alvast.
Code:
'      Name: mod_display_menu
' Function : display the switchboard after checking the access and password and password expiry date
'      Date: 23/01/2007

Option Compare Database
Option Explicit

Sub display_menu()
On Error GoTo err_display_menu
   
' at this stage the userId and access level has been checked
Dim access_level As Integer
Dim finish_Date As Date
Dim port_syd As String
Dim valid_user As Integer
Dim check_user As Integer
Dim password_period As Date
Dim check_password As String
Dim strmsg As String

valid_user = 2

' **********************************************
' validate user_id
' **********************************************
check_user = DCount("[user_id]", "tbl_users", "user_id=forms!frm_main!user_id")
    If check_user = 1 Then
        valid_user = 2
    Else
        valid_user = 0
   End If
    
' **********************************************
' validate password
' **********************************************
If valid_user = 2 Then
   check_password = DLookup("[passwords]", "tbl_users", "user_id=forms!frm_main!user_id")
   If UCase(check_password) = UCase(Forms!frm_main!password) Then
        valid_user = 2
   Else
        valid_user = 1
   End If
   
End If

' **********************************************
' validate access_level
' **********************************************
If valid_user = 2 Then
    access_level = DLookup("[access_level]", "tbl_users", "user_id=forms!frm_main!user_id")
End If

Select Case valid_user

    Case 0, 1
            strmsg = " Access Denied" & _
                        vbCrLf & " Contact your Administrator if the problem persists.   "
            MsgBox strmsg, vbInformation, "INVALID USER ID or PASSWORD"
            
                
    Case 2
            ' open and hide the utility form frm_utility
            ' this form will be used to store the user id for as as required e.g recording the user id of an
            ' user adding records etc.
            DoCmd.OpenForm "frm_utility", , , , , acHidden
                        
            'store the user id on the utility form frm_utility
            Forms!frm_utility!user_id = Forms!frm_main!user_id
            
            Select Case access_level
               Case 1 ' level1 menu
                    ' validate password expiry
                      password_period = DLookup("[password_date]", "tbl_users", "user_id = forms!frm_main!user_id")
                      If password_period < Date - 365 Then
                            strmsg = " Your password has expired. You must change your password"
                            MsgBox strmsg, vbInformation, "Expired Password"
                            DoCmd.OpenForm "frm_change_password", acNormal
                        Else
                            DoCmd.OpenForm "front"
                        End If
                                                              
               Case 2 ' level2 menu
                    ' validate password expiry
                      password_period = DLookup("[password_date]", "tbl_users", "user_id = forms!frm_main!user_id")
                      If password_period < Date - 365 Then
                            strmsg = " Your password has expired. You must change your password"
                            MsgBox strmsg, vbInformation, "Expired Password"
                            DoCmd.OpenForm "frm_change_password", acNormal
                        Else
                            DoCmd.OpenForm "front"
                        End If
                                                                                
                 Case 3 ' level3 menu
                    ' validate password expiry
                      password_period = DLookup("[password_date]", "tbl_users", "user_id = forms!frm_main!user_id")
                      If password_period < Date - 365 Then
                            strmsg = " Your password has expired. You must change your password"
                            MsgBox strmsg, vbInformation, "Expired Password"
                            DoCmd.OpenForm "frm_change_password", acNormal
                        Else
                            DoCmd.OpenForm "front"
                        End If
                Case Else
                        strmsg = " Access Denied" & _
                                    vbCrLf & " Contact your Administrator if the problem persists.   "
                        MsgBox strmsg, vbInformation, "INVALID USER ID or PASSWORD"
            End Select

End Select

exit_display_menu:
    Exit Sub
    
err_display_menu:
    MsgBox Err.decsription
    Resume exit_display_menu

End Sub
 
Ik gebruik niet zo'n ingewikkelde inlogprocedure, maar leg mijn gebruiker wel vast. Met deze code:

Code:
        sQuery = "INSERT INTO tLogin(UserID,Datum,Tijd,Actie)" & vbCrLf
        sQuery = sQuery & "VALUES('" & FnUser & "', CDate(" & CDbl(Date) & "), #" & Format(Now, "HH:mm") & "#, 'Inloggen" & "')"
        DoCmd.SetWarnings False
        CurrentDb.Execute sQuery, dbFailOnError
        DoCmd.SetWarnings True

Code:
        sQuery = "INSERT INTO tLogin(UserID,Datum,Tijd,Actie)" & vbCrLf
        sQuery = sQuery & "VALUES('" & FnUser & "', CDate(" & CDbl(Date) & "), #" & Format(Now, "HH:mm") & "#, 'Afmelden" & "')"
        DoCmd.SetWarnings False
        CurrentDb.Execute sQuery, dbFailOnError
        DoCmd.SetWarnings True

en:
Code:
        'Handeling loggen
    sQuery = "INSERT INTO tLogin(UserID,Datum,Tijd,Actie)" & vbCrLf
    sQuery = sQuery & "VALUES('" & FnUser & "', CDate(" & CDbl(Date) & "), #" & Format(Now, "HH:mm") & "#, 'Record bijgewerkt" & "')"
    DoCmd.SetWarnings False
    CurrentDb.Execute sQuery, dbFailOnError
    DoCmd.SetWarnings True
 
Laatst bewerkt:
Oke Octafish,

Bedankt voor je reactie.
Misschien een domme vraag maar waar plaats ik de code?
Voeg ik die toe aan de code die ik al heb? en zo ja op welke plaats of plak ik de code aan
een nieuw formulier?
Zoals ik je al eerder vertelt heb ik mijn kennis van Access niet echt van niveau.

Alvast bedankt in ieder geval.
 
Waar je wilt :). Ik log verschillende acties, zoals je ziet, ook mutaties die een gebruiker doet. De query bij aan/afmelden hangt dus bij de betreffende knop(pen).
 
Oke octofish, ik ga er morgen mee aan de gang maar toch nog een vraagje.
Als ik bij ga houden welke records er toegevoegd worden dan loopt de database toch
heel snel vol of valt dat wel mee?

Groeten

Rosario
 
Je wilt zelf de inlog historie bijhouden :). Maar de grootte van de db valt verder wel mee hoor, want zo groot zijn de gegevens niet. En je kunt, als je wilt opschonen, altijd wel een keer oudere records verplaatsen naar een historie database.
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan