Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Environ Abfrage beim Start der Datenbank

Begonnen von DaKain, November 23, 2018, 02:13:34

⏪ vorheriges - nächstes ⏩

DaKain

Hallo Acces-O-Mania Gemeinde,

ich sitze vor einem Problem. Ich möchte eine Datenbank durch eine Environ Abfrage "schützen". Der Code sieht so aus:

Private Sub Form_Open(Cancel As Integer)

Select Case Environ("Username")
Case "User0", "User1", "User2", "User3", "User4", "User5", "User6", "User7", "User8", "User9", "User10"
  DoCmd.OpenForm "Start"
Case Else
DoCmd.OpenForm "Kein_Zugriff"
End Select

End Sub

(Ich weiß das man durch drücken der Schift-Taste trotzdem ins Backend gelangt, aber die die mit der DB arbeiten sollen sind alles Ahnungslose und die wissen nicht wie Access funktioniert.)  :)

Der VBA Code funktioniert auch soweit. Zumindest wenn ich damit Buttons Belege in einem Formular "beim klicken"

Jetzt möchte ich aber diese Environ Abfrage schon beim Start also beim Öffnen des Startformulars der Datenbank ausführen. Das soll über eine Autoexec Makro wohl möglich sein, aber ich bekomme es nicht zum laufen.

Kann mir einer den Weg (möglichst einfach) Schildern? Muss ich ein Modul erstellen? Oder was genau muss ich tun???

Ich wäre euch für eure Hilfe wirklich sehr dankbar

VG

Kain

Beaker s.a.

Hallo Kain,
- Schreibe die Prozedur in ein allgemeines Modul.
- Erstelle das Macro "AutoExec"
- füge den Befehl "AusführenCode" hinzu und übergebe dieser den
Namen der obigen Prozedur als Parameter.
Wie selbst schon angemerkt lässt sich das allerdings auch durch "Shift"
beim Start aushebeln.
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

DaKain

Hi,

so erst mal danke für die schnelle Antwort. Ich habe die obige Prozedur in ein Modul eingefügt und dieses "Environ" genannt. Dann habe ich das Makro erstellt den Befehl Code ausführen hinzugefügt und dort den Funktionsnamen "Environ" eingetragen nun kommt die Fehlermeldung:

"Microsoft kann den angegebenen Namen "Environ" nicht finden"

Was mache ich nur falsch? :-(

Hoffe ihr habt noch ne Idee.

Grüße Kain

markusxy

Du nennst also das Modul so wie eine Funktion?  ???


PhilS

Zitat von: DaKain am November 27, 2018, 15:58:26
Ich habe die obige Prozedur in ein Modul eingefügt und dieses "Environ" genannt.
Ein Modul darf nicht denselben Namen haben wie eine Funktion.
Nenn dein Modul doch einfach modEnviron.
Neue Videoserie: Windows API in VBA

Klassische CommandBars visuell bearbeiten: Access DevTools CommandBar Editor

DaKain

Okay  ::) da habe ich nicht geschaltet, sorry. Aber ich habe es jetzt umbenannt und das ergebnis bleibt das gleiche :-( Die Fehlermeldung kommt erneut

DaKain


markusxy

Dann zeig mal deinen Code.
Oder glaubst du wir sind Hellseher?

Im autoexec Macro musst du "Code ausführen" verwenden und dann den Namen deiner Funktion anführen.
Keinesfalls den Namen des Moduls.

MzKlMu

Hallo,
wie heißt die Funktion ?
Wie heißt das Modul ?
Gruß Klaus

DaKain

@markus888: der Code der Environ ist im ersten Post! Da brauchste auch nicht Hellsehen für, trotzdem danke für die Antwort! Mir ist nicht klar was du mit Name der Funktion meinst?!


@MzKlMu
Das Modul heisst: "modenviron"
Und das Makro heisst: "autoexec"

MzKlMu

Hallo,
Du brauchst 3 Sachen:
- Funktion
- Modul als Container für die Funktion
- Autoexecmacro das die Funktion aufruft
Gruß Klaus

markusxy

Zitat von: DaKain am November 27, 2018, 17:52:04
@markus888: der Code der Environ ist im ersten Post! Da brauchste auch nicht Hellsehen für, trotzdem danke für die Antwort! Mir ist nicht klar was du mit Name der Funktion meinst?!

So wie der Code oben steht funktioniert das ja nicht.
Du brauchst eine Public Function, sonst kommt deine Fehlermeldung!  ;)

Public Function Startup()
Select Case Environ("Username")
Case "User0", "User1", "User2", "User3", "User4", "User5", "User6", "User7", "User8", "User9", "User10"
  DoCmd.OpenForm "Start"
Case Else
DoCmd.OpenForm "Kein_Zugriff"
Docmd.quit
End Select

Beaker s.a.

Hallo,
@Regulars
Hatte ich das echt so schlecht erklärt? Danke an euch für weitere
Erklärungen.

@Kain
ZitatDu brauchst eine Public Function, sonst kommt deine Fehlermeldung
Und du musst im Macro die beiden Klammern mit reinschreiben.
Startup()
(Name aus Markus' letztem Post, - also anpassen)

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)