Hoe krijg ik deze restricties

Status
Niet open voor verdere reacties.

dinoshop

Terugkerende gebruiker
Lid geworden
8 sep 2000
Berichten
1.100
heb hierbij gevoegd voorbeeld
login en met Benny en paswoord dino58
dan gaat de opent de login een formulier deze werkt verder niet maar het er om dat hij in de vba de restricties (modules) instelt op de formulier.
wie o wie kan mij daarbij helpen[
Bekijk bijlage Database10.rar
 
Ik snap je vraag niet. Je menu verschijnt, welke restricties bedoel je?
 
octa

ik zou willen dat er op de formulieren in de database over la de zelfde restricties word gebruikt zoals je kan zien in de Module .
eigenlijk zo dus bij het inloggen word over de gehele database deze gebruikt.

inlog scherm werkt goed maar de restricties die ik in de module heb staan worden nu niet uitgevoerd ik vergeet iets maar wat.

hoop dat iets duidelijker is
nog ff voorbeeldje

ik meld me aan en mag alleen lezen waar ik dus ook zit in de database mag en kan dan niks veranderen.
ben er al zolang mee bezig dat ik nu hulp vraag.
 
Ik zie één module met een functie "mySetSec" die nergens wordt aangeroepen. Dan is het logisch dat-ie niks doet :)
 
octa

als ik het goed begrijp is zo dat als je in Module iets neer zet je dit in de gehele database kunt gebruiken door in de formulier bij focus dit te melden .
maar als ik dit doe werkt het niet stel ik log in met alleen lezen .
kan ik de formulier gewoon aanpassen wat doe ik verkeerd?
 
Je hebt twee soorten modules: Modules en KlassenModules. De Modulepagina die bij een formulier hoort is een Klassenobject. Code die op dat formulier staat, werkt alleen op dat formulier. Heb je een functie die je algemeen wilt inzetten, dan moet je de code dus verplaatsen naar een eigen module, zoals je gedaan hebt met de functie mySetSec die op de modulepagina modGlbVars staat. Het aanroepen van een functie op een modulepagina gebeurt op exact dezelfde manier alsof de functie op de formulier-eigen module staat, alleen werkt hij dan dus overal. Je kunt wel functies gebruiken die op een ander formulier staan, maar dan moet dat formulier geopend zijn, en je moet naar het volledige pad verwijzen. Is allemaal dus niet handig. Functies zet je dus best in een aparte module. Meestal moet je dan de aanroep wel veranderen, omdat je dan niet meer met Me.Objectnaam.Value kunt werken, want Me. werkt alleen op de formulierpagina. Maar dat is simpel op te lossen door het formulier als parameter mee te geven. Jij doet dat zo:
Code:
Public Function mySetSec(Switchboard As String)
    Select Case (TempVars!strSecLvl)
        Case "Developer"
            With Forms(Switchboard)
                .DataEntry = True
                .AllowEdits = True
                .AllowDeletions = True
                .AllowAdditions = True
                .AllowFilters = True
            End With
            DoCmd.Close acForm, "Switchboard"
            DoCmd.OpenForm "frmlogin"
            DoCmd.Quit
    End Select

Ik doe het zo:

Code:
Public Function mySetSec(frm As Form)
    Select Case (TempVars!strSecLvl)
        Case "Developer"
            With frm
                .DataEntry = True
                .AllowEdits = True
                .AllowDeletions = True
                .AllowAdditions = True
                .AllowFilters = True
            End With
            DoCmd.Close acForm, "Switchboard"
            DoCmd.OpenForm "frmlogin"
            DoCmd.Quit
    End Select

Maar laten we het eens over je tabel "tblSecurity_Sec" hebben, want die vind ik erg vreemd... Je hebt daar 5 selectievakjes waarin je de rechten vastlegt. Maar dat kán nooit goed werken, omdat er (zonder stevig programmeren) geen check kan zijn op het aanklikken van meerdere opties, die elkaar derhalve acuut tegenspreken! Waarom niet één veld [access_level] met daarin een keuzelijst met waarden en ("Alleen lezen";"Alleen data";"Supervisor";"Administrator";"Developer") als rijbron? Het controleren op de gewenste rechten doe je dan zo op je login formulier:
Code:
      Else
        TempVars.Add "strSecLvl", DLookup("[access_level]", "tblSecurity_Sec", "[userID]='" & Me.txtUserID.Value & "'")
        Me.cmdLogIn.Enabled = True
        Me.cmdChngPW.Visible = True
        Me.cmdLogIn.SetFocus
    End If
En zeg nu zelf: da's een stuk simpeler! En veiliger, want met één veld met één keuzelijst kun je maar één waarde selecteren (mits je dat uiteraard instelt; in 2010 kun je multi-keuzelijsten maken. Maar dat is hier zinloos).
 
aha

zo zie je maar weer. ik ga er mee bezig ag ik vast weer danken.
 
Octo misschien al op vakantie of druk, maar zou je nog eens willen kijken naar bestandje ,
heb volgens mij alles goed staan maar werkt niet .
 
Over welk formulier heb je het?
 
Laat maar, ik heb het formulier al gevonden. Je hebt een beetje vreemde manier gebruikt om de check aan te roepen, en al helemaal de verkeerde plek. Ik heb 'm voor je aangepast. Heb ook mijn 'eigen' inlog formulier gebruikt :).
 

Bijlagen

Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan