Wachtwoordbeveiliging op een tabblad van een formulier

Status
Niet open voor verdere reacties.

remmie63

Gebruiker
Lid geworden
4 jan 2011
Berichten
378
Beste allemaal, ik heb een database gemaakt welke ik wil omzetten naar een mde bestand. Hierdoor moet ik een aantal handelingen automatiseren d.m.v. knoppen(bijwerkqry, tabelmaakqry, verwijderqry e.d.) omdat ik anders door het mde formaat niets meer aan de database kan veranderen. Ik heb een zogenaamd werkscherm gemaakt met een aantal tabbladen met knoppen en subformulieren. Een van deze tabbladen bevat dus een aantal knoppen waarvan ik niet wil dat Jan en alleman eraan kan. Mijn vraag nu: kan ik een tabblad van een formulier beveiligen d.m.v. een wachtwoord?
 
Aanpassingen maak je in je mdb bestand.
Na het testen van je aanpassingen maak je van je mdb bestand een nieuw mde bestand.
Het huidige mde bestand vervang je tenslotte door het nieuwe mde bestand.

Zorg ervoor dat je altijd een backup maakt van je laatste en een na laatste mdb bestand.

Tardis
 
Het huidige mde bestand vervang je tenslotte door het nieuwe mde bestand

Volgens mij heeft TS nog geen mde bestand, dat was juist onderdeel van de vraag... En op die vraag terug te komen: ja, je kunt een formulier beveiligen met een wachtwoord. Ook bepaalde knoppen en/of tabbladen op dat formulier kun je beveiligen, door ze eerst onzichtbaar te maken, en als het wachtwoord correct is, weer zichtbaar. Wil je het mooier doen, dan kun je met gebruikersinstellingen werken, waarbij je voor gebruikers toegangsniveau's instelt, op basis waarvan formulieren, knoppen etc. zichtbaar/bruikbaar worden.
 
remmie63,

je kan nu kiezen tussen twee opties, de optie die Octafish voorstelt en de mijne.
Maak het jezelf makkelijk en volg mijn (reguliere) aanpak.

Tardis
 
@Tardis: je hebt helemaal niks voorgesteld; TS had zelf al aangegeven dat hij een mde bestand wil maken als hij alles klaar heeft.... Dus ben ik wel benieuwd naar het andere voorstel van jou...
 
Beste tardis en Octafish,

ik heb in deze database de datumcode van Octafish verwerkt welke ik aan het begin van het jaar uitvoer en jaar gebonden is. Verder zitten in deze database nogal wat vaste gegevens maar ook gegevens die regelmatig veranderen en niet specifiek jaar gebonden zijn. Als ik elk begin van een nieuw jaar het 'originele' mdb bestand moet gaan omzetten naar mde bestand, betekent dat eigenlijk dat ik in feite twee db's moet voeden door het jaar heen. Ik ga, met alle respect en dank voor de moeite van Tardis :thumb:, voor het antwoord van Octafish.
Rest mij nog de vraag aan Octafish: hoe voer ik deze beveiliging uit?
Bij voorbaat dank.
Groet, Remco
 
Laatst bewerkt:
Verder zitten in deze database nogal wat vaste gegevens maar ook gegevens die regelmatig veranderen en niet specifiek jaar gebonden zijn.
Als je hiermee bedoelt dat je geen gegevens kunt toevoegen of muteren, zit je er gelukkig naast; een mde is een volledig werkende versie van je database. Dus alles wat je in de mde doet, wordt netjes opgeslagen. Wel zou ik de db splitsen in een frontend en backend, zodat je altijd bij je tabellen kunt. Van de frontend maak je dan het mde bestand.
De MDE hoef je ook pas te maken als de db helemaal af is, dus als alle queries werken, alle formulieren er zijn etc. En een nieuwe maken doe je dus als je iets in je formulieren etc. gewijzigd hebt. Wat betreft je beveiliging: hoe wil je die hebben?
 
Ik begrijp dat de mde versie een volledig werkende db is (met opslag).
ik heb in mijn db een formulier met een 5 tal tabs. Één van die tabs mag alleen toegankelijk zijn via een wachtwoord. De db (mde) is dus verder voor iedereen toegankelijk.
 
Een simpel voorbeeldje.... Het wachtwoord is Test.
 

Bijlagen

  • db1.zip
    11,7 KB · Weergaven: 32
Beste Octafish,

ik snap volgende regels uit VB code niet:

Private Sub CheckBox5_AfterUpdate()
Dim i As Integer

For i = 6 To 11
Me("CheckBox" & i).Visible = Me.CheckBox5
Next i

For i = 1 To 10
If Me.CheckBox5 = -1 Then
Me("TextBox" & i).Visible = True
Else
Me("TextBox" & i).Visible = False
End If
Next i

Op het vijfde tabblad van mijn formulier (=knop 25) heb ik de code ingepast. Ik krijg nu de foutmelding "dubbelzinnige -form_load"
Had ik de code dan misschien moet inpassen op het gehele formulier?
Groet, Remco
 
Als je deze melding krijgt (form_load) heb je waarschijnlijk twee Load procedures op je formulier. Controleer in het vba scherm (<Alt+<F11> de db met <Foutopsporing>, <db compileren> waar de fout zit, en haal 'm weg.
Wat betreft de code:

Code:
For i = 6 To 11
     Me("CheckBox" & i).Visible = Me.CheckBox5
Next i

Ik maak gebruik van een loopje, waarin checkboxen worden ingesteld. Met i=6 to 11 gebruik ik daarvoor de waarden 6 - 11. Normaal gesproken zou je een checkbox aanroepen met Me.Checkbox6, Me.Checkbox7 etc. Maar dat werkt niet in een loop. Daarom wordt de checkbox aangeroepen als Me("Checkbox6"). Dat heeft hetzelfde effect. Alleen zijn er dus meerdere checkboxen, en daarom wordt het nummer steeds opnieuw toegevoegd aan de naam. Vandaar dus Me("CheckBox" & i); i is steeds een volgend nummer, en dus steeds een andere checkbox. Het instellen van de checkbox gebeurt op basis van de waarde die in Checkbox5 is gekozen. Checkboxen hebben de waarde 0 of -1. Of True en False. Door de eigenschap Visible van de checkboxen 6-11 te koppelen aan de waarde van checkbox5 schakel je eigenlijk dus heen en weer tussen True (aangevinkt) en False (uitgevinkt).
Om het helemaal juist te zeggen: de vergelijking Me("CheckBox" & i).Visible = Me.CheckBox5 is waar, of niet waar. In het geval WAAR zet je Visible=True, en anders dus Visbible=False.

Het is een hele compacte manier van aanpassen van objecten met dezelfde basisnaam. Het maakt nu niet meer uit of je 5 checkboxen hebt of 500, de code blijft hetzelfde. Je hoeft alleen de regel i=1 To 200 te veranderen.
 
Dank voor je antwoord. Ik snap je uitleg (......denk ik!). Maar ik zit er nu even mee waar precies de code in te passen doe ik dat onder knop 25 of doe ik dat aan het begin van de code voor het formulier waarop alle tabs staan. Punt is als ik één form_load() weghaal ik daar weer een foutmelding over krijg.
Groet Remco
 
Da's vreemd, want er mag maar één Private Sub Form_Load() per formulier gebruikt worden.... Dan zit er in degene die je laat staan een foutje. Zoek 'm op met Foutopsporing, zou ik zeggen! Misschien ontbreekt er een End Sub; die haal je nog wel eens per abuis weg. De juiste plek voor de code is een beetje afhankelijk van hoe je de code wilt toepassen. Normaal gesproken zou ik 'm <Bij Laden> zetten, zoals in mijn voorbeeld.
Overigens heeft de rest van de code niks met jouw vraag te maken; die hoort bij een andere HelpMij vraag. Maar omdat ik niet altijd tijd/zin heb om steeds nieuwe db's te maken, combineer ik nog wel eens wat voorbeelden. Beschouw het dus als een stukje Lering Ende Vermaeck
 
Ik heb hem! Oftewel de lering is er. Ende het vermaeck zeker ook. Het hele verhaal van checkbox en nummering is inderdaad gewoon ballast. Heb ik helemaal niet nodig.
Bedankt!:thumb:
Groet, Remco
 
Hoe krijg ik de code zo aangepast dat ik niet de wachtwoordtekst maar sterretjes, of iets dergelijks, te zien krijg (******* )?
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan