rechtenstructuur knoppen schakelbord

Status
Niet open voor verdere reacties.

Dencar77

Gebruiker
Lid geworden
15 mrt 2013
Berichten
131
Hallo allen,

hier is ie weer.
Recentelijk had ik een idee gehad om een code in de inlogscherm te maken waarbij voor iedere gebruiker direct een eigen formulier opent. Dit is, zoals aangeraden werd, inderdaad ondoenlijk om deze bijna niet te onderhouden valt. [link]http://www.helpmij.nl/forum/showthread.php/774306-multi-user-inlogscherm-incl-doorverwijzing-eigen-opstartformulier)[/link]

En natuurlijk wil ik dat niet...dus ben ik flink wat gaan googlen en in wat boeken lopen zoeken en kwam op onder andere een thread op deze site waar een voorbeeldDB op stond.
Tevens werd er gesproken over een schakelbord. Op de manier zoals op internet omschreven staat om een schakelbord te maken, heb ik nooit gedaan. Wat ik doe is zelf een formulier opmaken en dan daar buttons opmaken en deze verwijzen naar andere formulieren...is dat dan ook een schakelbord??? Ondertussen heb ik via Start het schakelbord in het lint toegevoegd.

Maar om terug te komen op mijn vraag: Zoals Michel schreef is het beste om op de schakelbord een code toe te voegen wat gerelateerd is aan autorisatielevels. Dit is dus precies wat ik nodig had.


Nu heb ik het navolgende gemaakt:

Tbl_Medewerker:
- MedID (sleutel)
- Medewerker (tekstveld)
- wachtwoord (tekstveld)
- Autorisatie niveau (numeriek) 1-2-3-4

Daarnaast heb ik een aanmeldscherm gemaakt. Deze is gerelateerd aan de Tbl_Medewerker. Wanneer je de juiste combi maakt medewerker en wachtwoord dan wordt je naar het schakelbord geleid.
Op het schakelbord heb ik 5 knoppen gemaakt, te weten Medewerker , Senior , Leidinggevenden , Beheerder. Respectievelijk zijn de autorisatie niveau's 1 , 2 , 3 , 4. Dan heb ik nog 1 knop over en je raadt het al, verlaat database.

Op de zelf gemaakte schakelbord heb ik de 4 knoppen unvisible gemaakt en ook disabled. Nu wil ik dus via de autorisatie niveau in mijn Tbl_medewerker de knoppen zichtbaar maken. Medewerkers (niveau 1) kunnen dan alleen de knop BtnMedewerker visible en enabled krijgen, etc, etc.

Wat ik dan doe is in Ontwerpweergave openen van het schakelbord en het linkerbovenhoekvakje van het formulier aanvinken. Dan ga ik in het eigenschapsvenster naar Gebeurtenis en dan Bij Laden.
Daar doe ik de navolgende code intypen.

Code:
Option Compare Database
Option Explicit
Dim strSQL As String, sFilter As String, strMsg As String
Dim ValidUser As Integer
Dim AccessLevel As Integer

Private Sub Form_Load()
ValidUser = 2
strSQL = "SELECT [Level], FROM tbl_medewerker " 

With CurrentDb.OpenRecordset(strSQL)
    If .RecordCount = 1 Then
        ValidUser = 2
        AccessLevel = .Fields("Level").Value
    Else
        ValidUser = 1
        AccessLevel = 3
    End If
    .Close
End With

Select Case ValidUser
    Case 0, 1
        strMsg = "Toegang geweigerd" & vbCrLf & " Neem contact op met de beheerder indien het probleem blijft.   "
        MsgBox strMsg, vbInformation, "Niet de juiste gebruiker of wachtwoord."
        DoCmd.Close acForm, Me.Form.Name
    Case 2
        Select Case AccessLevel
            Case 1 ' Medewerker
                Me.BtnHoofdschermMedewerker.Visible = True
                Me.BtnHoofdschermMederwerker.Enabled = True
            Case 2 ' Senior
                Me.BtnSenior.Visible = True
                Me.BtnSenior.Enabled = True
            Case 3 ' Leidinggevenden
                Me.BtnHoofdschermLeidinggevenden.Visible = True
                Me.BtnHoofdschermLeidinggevenden.Enabled = True
            Case 4 ' Beheerder
                Me.BtnHoofdschermMedewerker.Visible = True
                Me.BtnHoofdschermMedewerker.Enabled = True
                Me.BtnSenior.Visible = True
                Me.BtnSenior.Enabled = True
	  Me.BtnHoofdschermLeidinggevenden.Visible = True
                Me.BtnHoofdschermLeidinggevenden.Enabled = True
	  Me.BtnHoofdschermBeheerder.Visible = True
                Me.BtnHoofdschermBeheerder.Enabled = True
            Case Else
                strMsg = " Toegang geweigerd." & vbCrLf & "Neem contact op met de beheerder."
                MsgBox strMsg, vbInformation, "Foutieve gebruiker of wachtwoord."
        End Select
    Case Else
End Select

End Sub


Ik weet dat ik sowieso in het begin van de code ergens iets moet aanpassen om het voor elkaar te boxen, maja,...wat.
Wie kan mij hierbij verder helpen om de mysterie op te lossen....

De foutmelding die ik ontvang is dat er iets aan de With Current ontbreekt, fout geschreven heb of dat iets niet bestaat.
 
Het schakelbord was een voorziening voor Access versies t/m 2003. Daarna heeft Microsoft het ontwikkelen ervan opgegeven, en vinden ze nu dat je beter met Navigatieformulieren kunt werken. Ze zijn ook bepaald onhandig in het gebruik (vind ik; anderen kunnen er prima mee werken) in ik gebruik ze dus nooit. Ik maak liever mijn eigen formulieren, en dan krijg je de constructie die je nu aan het maken bent. Vergeet dus het schakelbord, want je krijgt er waarschijnlijk alleen maar hoofdpijn van.
Wat je vraag betreft: is die er wel? Ik haal uit je verhaal geen echte vraag...
Wel een opmerking: een constructie als
Code:
        Me.BtnHoofdschermMedewerker.Visible = True
        Me.BtnHoofdschermMedewerker.Enabled = True
is weliswaar niet fout, maar ook gedeeltelijk overbodig. Een onzichtbare knop kun je namelijk nooit aanklikken, dus of die knop Enabled is of niet, maakt helemaal niet uit. Je ziet 'm namelijk niet. En wat je niet ziet, kun je ook niet klikken. De Enabled regels kunnen dus gelijk weg.
 
De bedoeling is dat ik na de inlogscherm op dit navigatieformulier terechtkom. 2 knoppen zijn zichtbaar, 1 knop voor wie het bestemd (bv Medewerker) is en de andere knop is verlaat database.
Ik heb standaard de knoppen (behalve verlaat database) op disable staan en unvisible.

Nu wil ik graag dat wanneer Pietje zich aan heeft gemeld dat bij het openen van het navigatieformulier de autorisatie niveau van Pietje leest. Wanneer Pietje dus niveau 1 (medewerker) heeft, dan kan wordt de knop medewerker zichtbaar en bruikbaar. Deze autorisatieniveau zit in de tabel medewerkers verwerkt.

Niveaus 1 (medewerker), 2 (senior), 3(Leidinggevenden), 4(beheerder).

De vraagstelling is waar ik de fout in de code heb zitten....Ik zie deze namelijk niet. In de onderstaande code heb ik beslist iets fouts gemaakt.

Code:
Option Compare Database
Option Explicit
Dim strSQL As String, sFilter As String, strMsg As String
Dim ValidUser As Integer
Dim AccessLevel As Integer

Private Sub Form_Load()
ValidUser = 2
strSQL = "SELECT [Level], FROM tbl_medewerker " 

With CurrentDb.OpenRecordset(strSQL)
    If .RecordCount = 1 Then
        ValidUser = 2
        AccessLevel = .Fields("Level").Value
    Else
        ValidUser = 1
        AccessLevel = 3
    End If
    .Close
End With

Select Case ValidUser
    Case 0, 1
        strMsg = "Toegang geweigerd" & vbCrLf & " Neem contact op met de beheerder indien het probleem blijft.   "
        MsgBox strMsg, vbInformation, "Niet de juiste gebruiker of wachtwoord."
        DoCmd.Close acForm, Me.Form.Name


Om op de opmerking terug te komen, dus ik hoef de button niet te disable, alleen maar onzichtbaar te maken?

Ps: schakelbord=navigatieformulier=eigen formulier opgemaakt en knoppen toegevoegd, mijn versie van navigeren.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan