Neuigkeiten:

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

Mobiles Hauptmenü

Per VBA erkennen, ob eine MDE oder MDB geöffnet wurde

Begonnen von accessy, August 16, 2015, 18:38:09

⏪ vorheriges - nächstes ⏩

accessy

Ich habe im Formular meiner MDB in den Eigenschaften
Löschen zulassen = Nein
Anfügen zulassen = Nein
eingestellt.
Weiterhin werden Abfragen und Tabellen ausgeblendet.
Anschließend eine MDE erstellt.

Nun können die Kollegen den VBA Code nicht mehr einsehen.
Es gibt da aber noch ein paar Schaltflächen,
also CommandButton, die ich in der MDE gerne ausgeblendet, aber in meiner MDB sichtbar haben möchte.
Die VBA Funktion mit Visible = True oder False ist nicht das Problem.

Kann man das per VBA Befehl hinbekommen,
dass beim Öffnen der MDE im Ereignis Form_Open exakt das abgefragt werden kann?

Also IF MDE then Commandbutton Visible = False
  elseif MDB then Commandbutton Visible = True
So in etwa....

Noch kurz hinzugefügt. Die Eigenschaft "Bearbeiten zulassen auf NEIN" stellen, geht nicht, weil dann so einige CommandButton gar nicht mehr gehen.

MzKlMu

Hallo,
als einfache Lösung fällt mir nur folgendes ein:

Lege in einem allgemeinen Modul in allen DBs (auch der MDB) eine Konstante an:

Public Const MDE As Boolean = True 'False für MDB

Im Ereignis Form_Open dann folgende VBA Zeilen:

Commandbutton_1.Visible = Not MDE
Commandbutton_2.Visible = Not MDE
.
.


If Then wird nicht benötigt. Der Wahrheitswert der Konstanten wird direkt zugewiesen und durch Not negiert, das heißt, aus True wird False und damit der Button unsichtbar wenn es eine MDE ist.

Möglicherweise gibt es auch noch andere Lösungen.
Die Lösung setzt aber voraus, dass jeder User sein eigenes Frontend hat, wie es in einer Mehrbenutzerumgebung auch sein sollte.

Gruß Klaus

accessy

Das mit dem BOOLEAN ist mir klar.
Aber wo ist denn die Erkennung, ob es sich um eine MDE oder MDB handelt?

MzKlMu

#3
Hallo,
das ist keine automatische Erkennung, das musst Du selbst entsprechend eintragen. Jeder User hat ja sein eigenes Frontend (hoffentlich). Bei den Usern die eine MDE haben trägst Du halt True ein (bzw. False, siehe weiter unten), bei den anderen False (bzw. True).

Eine automatische Lösung habe ich keine, was nicht heißt, dass es keine gibt.

Das lässt sich noch etwas logischer aufbauen:
Public Const MDB As Boolean = True 'False für MDE
MDB und MDE getauscht.
Im Formular dann so:
Commandbutton_1.Visible = MDE
Commandbutton_2.Visible = MDE

Man spart sich die Negierung.
Gruß Klaus

Josef P.

Hallo!

Eine mde/accde erhält eine database-Property "MDE".
=> Prüfung auf
If Currentdb.Properties("MDE") = "T" then
   IsMDE = True
end if

Kleine Lästigkeit: die Property gibt es in einer mdb/accdb nicht. => Prüfung läuft auf einen Fehler, den man abfangen muss oder zuvor die Exisitenz der Property prüfen muss.

mfg
Josef

markusxy

Du könntest eventuell auch über die Name Eigenschaft feststellen ob es sich um eine MDE/ACCDE handelt.
CommandButton.Visible = Right(Application.CurrentProject.Name, 1) <> "e"
LG Markus

accessy

Danke für die vielen Hinweise dazu.
Ich werde mal durchgehen und entsprechende Lösung einbauen.