Arbeitet mit Access-Datenbanken an sensiblen Daten oder Daten, die einfach nicht jeder sehen soll, ist es sinnvoll die Formulare bei Inaktivität gegen ungewollte Einsichtnahme Dritter zu schützen. Dies geht am einfachsten wenn man sie schließt. :-)

Was in der Theorie ganz einfach ist, scheint in der Praxis manchmal ein unlösbares Problem zu sein. Wie schnell ist man mal aufgestanden um nur ein Blatt aus dem Drucker zu holen und hat dabei das Formular geöffnet gelassen? Viel zu schnell, kann ich aus der Erfahrung berichten. Ich präsentiere hier eine Lösung, die nur gegen nicht gewollte Blicke schützt, nicht gegen schnelle Finger von Kollegen und Kunden.

Was hier geschieht:
Bei verschiedenen Ereignissen (Mausbewegung, BeforeUpdate-Ereignis, etc) wird die Variable „LastActivity“ mit einem Wert belegt. Eine kontinuierliche Überprüfung, ob die Zeitdifferenz zwischen der letzten Aktivität und JETZT größer ist als 30 Sekunden, löst im Falle der Erfüllung der Abfrage das Schliessen des Formulares aus.

Folgender Code wird dazu benötigt:

Dim LastActivity As Date
Const Waitms = 1000

Private Sub Detailbereich_MouseMove(Button As Integer, Shift As Integer, _
x As Single, y As Single)
LastActivity = Now
End Sub

Private Sub Form_Current()
LastActivity = Now
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
LastActivity = Now
End Sub

Private Sub Form_BeforeUpdate(Cancel As Integer)
LastActivity = Now
End Sub

Private Sub Form_Load()
Me.TimerInterval = Waitms
Me.KeyPreview = True
LastActivity = Now
End Sub

Private Sub Form_Timer()
If DateDiff("s",LastActivity,Now) > 360 Then ' 6 Minuten nichts los
DoCmd.Close acForm, Me.Name
End If
End Sub

Bitte versteht dies nicht als sichere Methode Daten zu schützen, es ist lediglich ein Schutz gegen neugierige oberflächliche Blicke. Ich hoffe ich konnte euch damit trotzdem ein wenig helfen.

  • Share/Bookmark