Hallo,
WO ist diese Prozedur erstellt?
Als Modul
Ich nehme jetzt an, es handelt sich dann um ein Standardmodul (Im Navi-Fenster unter Module) und kein Klassenmodul (z. B. Formularmodul)
WARUM soll die Prozedur mir einem MAKRO „geöffnet“
(ausgeführt) werden?
Weil sie in der AutoExec stehen soll, damit die beim Öffnen
der DB ausgeführt werden soll.
Ok, dieses Makro ist eines der beiden, die man verwenden kann ))
Doch schon bei der Makroerstellung kann ich die Prozedur, die
ich erstellt habe nicht auswählen, da diese in den
vorgegebenen Prozeduren nicht beinhaltet ist.
Mit Makros kann nur eine Funktion (Function) ausgeführt
werden.
Das ist ja genau mein Problem.
Wie kann ich erreichen, dass diese Sub-Prozedur beim starten
der DB ausgeführt wird?
Niemand behauptet, dass es eine SUB sein MUSS, also mach eine Function daraus und deklariere die als PUBLIC…
Es geht um Folgende simple Prozedur:
Public Function Zugangsberechtigung()
Dim strEingabe As String
Dim fml_status As Form ’ für was ist diese Deklaration?
strEingabe = InputBox(„Bitte Anmeldenamen eingeben“,
Environ(„UserName“))
If strEingabe = „Name“ Then
DoCmd.OpenForm „Formular“
Else
MsgBox „Zugriff verweigert!“
DoCmd.CloseDatabase
End If
End Function
Was genau ist denn vorher gelaufen?
Das makro hat nach dem manuellen starten den angemeldeten
„UserName“ mit der Eingabe verglichen und korrekt gehandelt.
Das mag sein, ist das aber der Sinn und Zweck des Ganzen? Oder soll das eher eine Passwort-Abfrage werden?
Dazu wollte ich es in die AutoExec einbauen.
ok tu das und ruf die FUNKTION im Autoexec-Makro (AusführenCode) auf
Dann wird die Prozedur aber nicht mehr erkannt.
Statt Makros zu benutzen, kann ein solcher Code besser gleich
in einer Ereignisprozedur eines geeigneten Ereignisses
eingebaut werden.
Klingt gut. Aber das Ereignis ist das Öffnen der Datenbank.
Das Öffnen der DB hat an sich kein Ereignis… Ereignisse findet man in Formularen und Berichten (Abgesehen mal von den „Triggern“ in Tabellen und da auch nur in den neuesten A-Versionen)
Es ist möglich, das Formular „Formular“ als Startformular in den DB-Optionen zu definieren.
Dann kann der Code beim Open-Ereignis („Beim Öffnen“) ausgeführt werden. Entweder direkt in der Ereignisprozedur oder als Aufruf einer Public-Sub (!) oder Public-Funktion .
Sub Form_Open(Cancel as Integer)
Dim strEingabe As String
strEingabe = InputBox(„Bitte Anmeldenamen eingeben“,
Environ(„UserName“))
If strEingabe „Name“ Then
MsgBox „Zugriff verweigert!“
Cancel=true
End If
End Sub
oder als Prozedur-Aufruf:
Sub Form_Open(Cancel as Integer)
Zugangsberechtigung
End Sub
Gruß
Franz,DF6GL