login systeem + restricties + wijzigingen opslaan

Status
Niet open voor verdere reacties.

gotcha123

Gebruiker
Lid geworden
12 apr 2008
Berichten
86
Ik heb op basis van vroegere posts hier een login systeempje gemaakt (beetje VBA code en een tabel met een gebruikersnaam, paswoord en een aantal kolommen van wie waar mag komen).
Beetje extra informatie over het systeem: het betreft een soort van opvolgsysteem, waarin alle onderdelen in aparte databases geplaatst zijn, met als basis gelinkte tabellen van personen die in elke db terugkeren. Als het systeem opgestart wordt, dan moet men eerst zijn paswoord ingeven en komt men daarna op een startpagina terecht, waarop alle links naar de verschillende db's staan.

Nu heb ik 2 vragen hieromtrent:
1) op welke manier kan ik nu het beste die restricties (wie waar toegang tot heeft) toepassen in de VBA-code? Ik veronderstel ergens met een If-functie, maar ik weet niet goed hoe ik er moet aan beginnen...

2) als ik in diezelfde tabel waar de gebruikersnamen, paswoorden, etc staan ook nog de laatste inlog/inputdatum van elke gebruiker wil ingeven, hoe kan ik deze dan best toevoegen? Het zou dan ook de bedoeling dat elke keer die info overschreven wordt als een bepaalde persoon opnieuw inlogt/input geeft.

In bijlage de startpagina.

Alvast bedankt voor alle mogelijke hulp!
 

Bijlagen

thanks, da's al een hele grote hulp!

Ik heb dit in het volledige bestand toegepast. De restricties worden nu toegepast, zoals ze in de tabel staan. Als ik nu op de knop afsluiten druk, dan krijg ik elke keer volgende foutmelding:

Fout 2450 tijdens uitvoering:
Kan het formulier frmLogin niet vinden waarnaar wordt verwezen in een macro-expressie of in Visual-Basic programmacode.

Bij jouw bestand heb ik deze foutmelding niet, alhoewel de VB-code identiek is (alleen iets meer regels code).
Ik zie enkel een referentie naar het login formulier in het begin van jouw code, maar ook dat staat bij jou.

Enig idee hoe dit komt en op te lossen valt?
 
Ik denk dat je nog iets vergeten bent over te nemen. Op welke regel krijg je de foutmelding? Laat de regel eens zien?
 
code ziet er als volgt uit.

Code:
Private Sub Form_Load()

     Dim strLogin As String

' SELECT tblLogin.LoginID, tblLogin.Gebruikersnaam, tblLogin.Paswoord, tblLogin.Weekplanning,
' tblLogin.Tornooiverslag, tblLogin.Scouting, tblLogin.Video, tblLogin.Medisch, tblLogin.Mentaal,
' tblLogin.Voeding, tblLogin.Lichaamsmetingen, tblLogin.DTC_Agenda, tblLogin.Snelheidstesten,
' tblLogin.Kracht, tblLogin.Legertesten
' FROM tblLogin;

    strLogin = Forms("frmLogin").txtLogin
    Me.cmdScouting.Enabled = DLookup("Scouting", "tblLogin", "Gebruikersnaam = '" & strLogin & "'")
    Me.cmdTornooiverslag.Enabled = DLookup("Tornooiverslag", "tblLogin", "Gebruikersnaam = '" & strLogin & "'")
    Me.cmdVideo.Enabled = DLookup("Video", "tblLogin", "Gebruikersnaam = '" & strLogin & "'")
    Me.cmdWeekplanning.Enabled = DLookup("Weekplanning", "tblLogin", "Gebruikersnaam = '" & strLogin & "'")
    Me.cmdMentaal.Enabled = DLookup("Mentaal", "tblLogin", "Gebruikersnaam = '" & strLogin & "'")
    Me.cmdVoeding.Enabled = DLookup("Voeding", "tblLogin", "Gebruikersnaam = '" & strLogin & "'")
    Me.cmdLichaamsmetingen.Enabled = DLookup("Lichaamsmetingen", "tblLogin", "Gebruikersnaam = '" & strLogin & "'")
    Me.cmdKracht.Enabled = DLookup("Kracht", "tblLogin", "Gebruikersnaam = '" & strLogin & "'")
    Me.cmdSnelheidstesten.Enabled = DLookup("Snelheidstesten", "tblLogin", "Gebruikersnaam = '" & strLogin & "'")
    Me.cmdLegertesten.Enabled = DLookup("Legertesten", "tblLogin", "Gebruikersnaam = '" & strLogin & "'")
    Me.cmdAgenda.Enabled = DLookup("DTC_Agenda", "tblLogin", "Gebruikersnaam = '" & strLogin & "'")
    Me.cmdMedisch.Enabled = DLookup("Medisch", "tblLogin", "Gebruikersnaam = '" & strLogin & "'")
    
End Sub
 
Is je misschien niet opgevallen, maar ik heb je frmLogin form invisible gemaakt zodra je op de knop drukt en je mag door. als je niet door mag dan moet je opnieuw login en password opgeven.

even kijken in de code van het frmlogin form dus.

Als het form wordt gesloten dan is het niet meer beschikbaar en dan is kan je het form niet meer vinden in de collectie forms.

Dus niet docmd.close acform me.name maar me.visible=false

Enjoy!
 
dat had ik wel al gezien, en ook al aangepast in de code van frmLogin
missschien zie jij er nog ergens een foutje in staan dat ik over het hoofd zie...zie hieronder voor de code...

Code:
Private Sub cmdLogin_Click()

    If IsNull(Me.txtLogin) Then
        MsgBox "Geef uw gebruikersnaam in"
        Exit Sub
    ElseIf IsNull(Me.txtPaswoord) Then
        MsgBox "U moet een paswoord ingeven"
        Exit Sub
    End If
    
    If Me.txtPaswoord.Value = DLookup("Paswoord", "tblLogin", "Gebruikersnaam = '" & Me.txtLogin.Value & "'") Then
        Me.Visible = False 'Geopend maar niet zichtbaar.
        DoCmd.OpenForm "frmStartpagina", acNormal
    Else
        MsgBox "Ongeldig paswoord", vbExclamation
    End If
    
End Sub
 
kan je je database nog eens posten met de aangepaste code en de foutmelding?
 
in bijlage de aangepaste db.
Ik heb het nu voorlopig zo gedaan dat hij de foutmelding achterwege laat en gewoon afsluit...maar er zit nog altijd ergens een fout natuurlijk...
 

Bijlagen

Ik krijg diverse foutmeldingen over plaatjes die jij gebruikt hebt maar geen echte fout. Ook als ik je code compileer krijg ik geen foutmelding. Maar je code werkt niet vandaar dat ik iets heb aangepast.

Code:
Private Sub cmdTornooiverslag_Click()

    Const strFullpath As String = "c:\Access cursus\Tornooiverslag.mdb"
    
    If Len(Nz(Dir(strFullpath))) = 0 Then
       MsgBox "Database programma niet gevonden op het huidige pad.", vbExclamation
    Else
       Shell "msaccess.exe """ & strFullpath & """", vbMaximizedFocus
    End If
       
End Sub
De rest moet je zelf aanpassen. Het shell commando zorgt ervoor dat de database wordt opgestart in een apart Access proces.

Voorheen, de manier die jij probeert, wordt een instance van Access gecreeerd die dusdanig kort leeft dat je denkt dat er niets gebeurt. De scope van accappl is dusdanig klein (alleen binnen de sub) dat access niet eens de tijd krijgt om iets te doen.

Na het shell commando kan je de huidige database ook nog afsluiten. Zo hou je alleen 1 Access proces over.

Enjoy!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan