PDA

Vollständige Version anzeigen : Passwortschutz für einzelne Tabellen/Formulare?


Wildmieze
10.05.2001, 13:29
Seid gegüßt!

Ich erstelle für meine Firma eine Kursdatenbank - dabei ist es wichtig, daß nicht jeder die Kurse verändern kann, aber jeder sie einsehen kann...

Daher habe ich folgendes vor:

- Ein Startformular erstellen
- Bei "Kurse bearbeiten" ein Button; wenn man dort draufklickt, soll ein Passwort abgefragt werden...
- Bei Kurse ansehen normaler Button zum Formular öffnen *g* - das krieg ich hin *lol*

-außerdem soll man auch dieses Datenbank-Fenster nur nach Passworteingabe öffnen können ...

Geht das ? Wenn ja, wie?

Eine Access-Gequälte
Wildmieze

AWSW
10.05.2001, 13:47
Also ich mache das bei der MDB oder MDE so...

Ich habe mir dafür ein extra Formular gebaut, welches beim Öffnen erst mal das hier prüft (Zu viele Falscheingaben ???):
---------------------------------------------
Private Sub Form_Open(Cancel As Integer)
Me.Text35 = Nz(DCount("*", "Postleitzahlen"), 0)
If Me!Text35 > 15 Then
Me!Befehl440.Enabled = False
Me![PW1].Locked = True
Me![PW2].Locked = True
Me![PW3].Locked = True
Me![PW4].Locked = True
Me![PW5].Locked = True
Me![Bezeichnungsfeld5].Visible = False
Me![Bezeichnungsfeld7].Visible = False
Me![Bezeichnungsfeld8].Visible = False
Me![Bezeichnungsfeld9].Visible = False
Me![Bezeichnungsfeld37] = "Keine weitere Eingabe möglich - Passwort 15x falsch eingegeben"
Else
Me!Befehl440.Enabled = True
Me![Bezeichnungsfeld37] = "Wenn das Passwort 15x falsch eingegeben wird, erfolgt eine Sperrung"
Me![PW1].Locked = False
Me![PW2].Locked = False
Me![PW3].Locked = False
Me![PW4].Locked = False
Me![PW5].Locked = False
Me![Bezeichnungsfeld5].Visible = True
Me![Bezeichnungsfeld7].Visible = True
Me![Bezeichnungsfeld8].Visible = True
Me![Bezeichnungsfeld9].Visible = True
End If
End Sub
---------------------------------------------

So sieht das Form aus: PW01.jpg

Nach Eingabe des richtogen PW erscheint dein gewünschter Startdialog: PW02.jpg

So sieht die Tabelle aus, die die Eingaben protokolliert:PW03.jpg


Hier das Script, mit dem das Passwort geprüft wird, nach dem man auf den entsprechenden Button im Formular gedrückt hat (15 Falscheingaben sperren diesen Button):
[code]
Private Sub Befehl440_Click()
On Error GoTo Err_Befehl440_Click


Dim stDocName1 As String
Dim stDocName2 As String
Dim stDocName3 As String
Dim stDocName4 As String
Dim stDocName5 As String

stDocName1 = "11111"
stDocName2 = "22222"
stDocName3 = "33333"
stDocName4 = "44444"
stDocName5 = "55555"

If Me!PW1 = stDocName1 Then
GoTo 2
Else: 'MsgBox "!!! Fehlerhafte Eingabe im 1. Eingabefeld !!!" & Chr(13) & "" & Chr(13) & "Fehlerzähler um 1 erhöht." & Chr(13) & "" & Chr(13) & "Bei weiteren Falscheingaben sperrt sich diese Passwortfunktion."
GoTo 6
End If
2
If Me!PW2 = stDocName2 Then
GoTo 3
Else: 'MsgBox "!!! Fehlerhafte Eingabe im 2. Eingabefeld !!!" & Chr(13) & "" & Chr(13) & "Fehlerzähler um 1 erhöht." & Chr(13) & "" & Chr(13) & "Bei weiteren Falscheingaben sperrt sich diese Passwortfunktion."
GoTo 6
End If
3
If Me!PW3 = stDocName3 Then
GoTo 4
Else: 'MsgBox "!!! Fehlerhafte Eingabe im 3. Eingabefeld !!!" & Chr(13) & "" & Chr(13) & "Fehlerzähler um 1 erhöht." & Chr(13) & "" & Chr(13) & "Bei weiteren Falscheingaben sperrt sich diese Passwortfunktion."
GoTo 6
End If
4
If Me!PW4 = stDocName4 Then
GoTo 5
Else: 'MsgBox "!!! Fehlerhafte Eingabe im 4. Eingabefeld !!!" & Chr(13) & "" & Chr(13) & "Fehlerzähler um 1 erhöht." & Chr(13) & "" & Chr(13) & "Bei weiteren Falscheingaben sperrt sich diese Passwortfunktion."
GoTo 6
End If
5
If Me!PW5 = stDocName5 Then
MsgBox "Hallo Axel" & Chr(13) & "" & Chr(13) & "Das Eigenschaftenfenster startet nun..." & Chr(13) & "" & Chr(13) & "Der Kennwortzähler ist nun wieder auf 0 !!!" & Chr(13) & "" & Chr(13) & "Viel Spaß noch...", , "!!! Erfolgreiche Eingabe !!!"
'DoCmd.RunMacro "PLZ"
Call EinstellenStarteigenschaften00
DoCmd.RunCommand acCmdStartupProperties
DoCmd.Close acForm, "Postleitzahlen", acSaveYes
DoCmd.OpenTable "Postleitzahlen", acNormal, acEdit
DoCmd.RunCommand acCmdSelectAllRecords
DoCmd.RunCommand acCmdDelete
DoCmd.Close acTable, "Postleitzahlen"
Else: 'MsgBox "!!! Fehlerhafte Eingabe im 5. Eingabefeld !!!" & Chr(13) & "" & Chr(13) & "Fehlerzähler um 1 erhöht." & Chr(13) & "" & Chr(13) & "Bei weiteren Falscheingaben sperrt sich diese Passwortfunktion."
GoTo 6
End If

Exit_Befehl440_Click:
Exit Sub

6 MsgBox "!!! Fehlerhafte Eingabe des Kennwortes !!!" & Chr(13) & "" & Chr(13) & "!!! Wenn das Passwort 15x falsch eingegeben wird, erfolgt eine Sperrung !!!"
DoCmd.Quit
Exit Sub

Err_Befehl440_Click:
MsgBox Err.Description
Resume Exit_Befehl440_Click
End Sub
[/code]

Danach muß man die DB schließen und wieder öffnen oder reparieren oder kompremiern, um dann wieder das Startdialogfenster sehnen zu können. Als Grundlage für die verschlossene Arbeitsversion dient das StartEigenschaften Modul aus der Hilfe:
[code]
Option Compare Database
Option Explicit

Public Function EinstellenStarteigenschaften00()
ÄndernEigenschaft "StartupForm", dbText, "Startbildschirm"
ÄndernEigenschaft "StartupShowDBWindow", dbBoolean, False
ÄndernEigenschaft "StartupShowStatusBar", dbBoolean, False
ÄndernEigenschaft "AllowBuiltInToolbars", dbBoolean, False
ÄndernEigenschaft "AllowShortcutMenus", dbBoolean, False
ÄndernEigenschaft "AllowFullMenus", dbBoolean, False
ÄndernEigenschaft "AllowBreakIntoCode", dbBoolean, False
ÄndernEigenschaft "AllowToolbarChanges", dbBoolean, False
ÄndernEigenschaft "AllowSpecialKeys", dbBoolean, False
ÄndernEigenschaft "AllowBypassKey", dbBoolean, False
Application.SetOption "ShowWindowsInTaskbar", False
Application.SetOption "Cursor Stops at First/Last Field", True
Application.SetOption "Show Hidden Objects", False
End Function

Function ÄndernEigenschaft(strEigenschaftenname As String, varEigenschaftentyp As Variant, varEigenschaftenwert As Variant) As Integer
Dim dbs As Database, prp As Property
Const conPropNotFoundError = 3270

Set dbs = CurrentDb
On Error GoTo Ändern_Fehler
dbs.Properties(strEigenschaftenname) = varEigenschaftenwert
ÄndernEigenschaft = True

Ändern_Ende:
Exit Function

Ändern_Fehler:

If Err = conPropNotFoundError Then ' Eigenschaft nicht gefunden.
Set prp = dbs.CreateProperty(strEigenschaftenname, _
varEigenschaftentyp, varEigenschaftenwert)
dbs.Properties.Append prp
Resume Next
Else
' Unbekannter Fehler.
ÄndernEigenschaft = False
Resume Ändern_Ende
End If
End Function
[/code]

So erst mal genug für Dich zu tun...

Ich hoffe das hilft etwas....

Wildmieze
10.05.2001, 13:52
Ui, danke für die schnelle Antwort! *freu*

Ich druck mir die Seite mal aus, und melde mich dann in ca. 4 Wochen wieder - bis dahin müßte ich es verstanden haben *lol*

Nee, im Ernst, danke Dir, ich schau mal, wie ich was davon in meiner DB einbauen kann...

Gruß
Mieze

AWSW
10.05.2001, 14:05
OK,
ich habe mir zusätzlich noch einen versteckten Doppelklickbutton mit einer 2. Version angelegt, als eine Art PUK zur PIN des 1. Eingabefeldes... Damit ich falls jemand so schlau war den Zähler doch auszuprobieren und den Button nach 15x sperrte, dann noch die Möglichkeit zu haben den Zähler zurück zu setzen, das sieht dann fast genau so aus, nur ist dann der Button anders bestückt:

Das Passwort 54321 ist natürlich nicht das echte :o)
---------------------------------------------
Private Sub Befehl550_Click()
On Error GoTo Err_Befehl550_Click

Dim stDocName1 As String
Dim stDocName2 As String
Dim stDocName3 As String
Dim stDocName4 As String
Dim stDocName5 As String

stDocName1 = "5"
stDocName2 = "4"
stDocName3 = "3"
stDocName4 = "2"
stDocName5 = "1"

If Me!PW1 = stDocName1 Then
GoTo 2
Else: 'MsgBox "!!! Fehlerhafte Eingabe im 1. Eingabefeld !!!" & Chr(13) & "" & Chr(13) & "Fehlerzähler um 1 erhöht." & Chr(13) & "" & Chr(13) & "Bei weiteren Falscheingaben sperrt sich diese Passwortfunktion."
GoTo 6
End If
2
If Me!PW2 = stDocName2 Then
GoTo 3
Else: 'MsgBox "!!! Fehlerhafte Eingabe im 2. Eingabefeld !!!" & Chr(13) & "" & Chr(13) & "Fehlerzähler um 1 erhöht." & Chr(13) & "" & Chr(13) & "Bei weiteren Falscheingaben sperrt sich diese Passwortfunktion."
GoTo 6
End If
3
If Me!PW3 = stDocName3 Then
GoTo 4
Else: 'MsgBox "!!! Fehlerhafte Eingabe im 3. Eingabefeld !!!" & Chr(13) & "" & Chr(13) & "Fehlerzähler um 1 erhöht." & Chr(13) & "" & Chr(13) & "Bei weiteren Falscheingaben sperrt sich diese Passwortfunktion."
GoTo 6
End If
4
If Me!PW4 = stDocName4 Then
GoTo 5
Else: 'MsgBox "!!! Fehlerhafte Eingabe im 4. Eingabefeld !!!" & Chr(13) & "" & Chr(13) & "Fehlerzähler um 1 erhöht." & Chr(13) & "" & Chr(13) & "Bei weiteren Falscheingaben sperrt sich diese Passwortfunktion."
GoTo 6
End If
5
If Me!PW5 = stDocName5 Then
MsgBox "Hallo Axel" & Chr(13) & "" & Chr(13) & "Die Passworttabelle ist nun wieder frei geschaltet." & Chr(13) & "" & Chr(13) & "Der Kennwortzähler ist nun wieder auf 0 !!!" & Chr(13) & "" & Chr(13) & "Viel Spaß noch...", , "!!! Erfolgreiche Eingabe !!!"
DoCmd.Close acForm, "Postleitzahlen", acSaveYes
DoCmd.OpenTable "Postleitzahlen", acNormal, acEdit
DoCmd.RunCommand acCmdSelectAllRecords
DoCmd.RunCommand acCmdDelete
DoCmd.Close acTable, "Postleitzahlen"
Else: 'MsgBox "!!! Fehlerhafte Eingabe im 5. Eingabefeld !!!" & Chr(13) & "" & Chr(13) & "Fehlerzähler um 1 erhöht." & Chr(13) & "" & Chr(13) & "Bei weiteren Falscheingaben sperrt sich diese Passwortfunktion."
GoTo 6
End If


Exit_Befehl550_Click:
Exit Sub

6 MsgBox "!!! Fehlerhafte Eingabe des Kennwortes !!!" & Chr(13) & "" & Chr(13) & "!!! Wenn das Passwort 15x falsch eingegeben wird, erfolgt eine Sperrung !!!"
DoCmd.Quit
Exit Sub

Err_Befehl550_Click:
MsgBox Err.Description
Resume Exit_Befehl550_Click
End Sub
---------------------------------------------

WICHTIG - Lege vorher eine Sicherheitskopie Deiner DB an !!!


So und nun Ende :o)

Wildmieze
10.05.2001, 16:22
Danke nochmal - durch Deine Texte hab ich nu sowas ähnliches wie einen "geschützten" Bereich (Der Button auf meinem Startformular läßt sich nun nur noch anklicken, wenn man vorher das richtige PW daneben geschrieben hat, ansonsten kommt ne msgbox mit "falsches Passwort!" .. *ggg* so hatte ich mir das in etwa gedacht ...

Gruß
Mieze

Kevin
11.05.2001, 10:24
Hi, wieso so umständlich ?
Es geht doch auch über den Benutzergruppen Manager.

Kev

AWSW
11.05.2001, 11:37
Hi Kevin,
das ist aber nicht Ziel dieser Aktion gewesen...

Wildmieze und meine Wenigkeit, wollten nur einen Teil schützen, und nicht alle User immer mit einem Kennwort nerven...