Erstellen Sie in diesem Fall einen Link per Rechtsklick im Windows-Explorer und mit Hilfe des Menüs Neu Verknüpfung (Bild 1). Ein Assistent ermöglicht die Eingabe des Programmpfads sowie des Namens der Verknüpfungsdatei wie in Bild 2.
Als Speicherort geben Sie den kompletten Pfad zur Datei MSAccess.exe ein:
"C:\Office\MSACCESS.EXE"
Der Pfad muss natürlich demjenigen Ihrer Installation entsprechen. In dieser Form wird nur Access ohne Parameter gestartet.
Sie können noch weitere Parameter ändern, aber erst, wenn sie nachträglich auf der fertigen Verknüpfung mit Rechtsklick die Eigenschaften wie in Bild 3 anzeigen lassen. Dort ist sowohl die Fenstergröße unter Ausführen als auch die eigentliche Datenbank mit ihren Parametern unter Ziel einstellbar.
Geben Sie bei Ziel hinter dem Pfad zu MSAccess.exe ein Leerzeichen und den Pfad zu Ihrer Datenbank an, wobei alle Angaben immer ohne Zeilenwechsel stehen müssen:
"C:\Office\MSACCESS.EXE" "G:\ExpertsInside\Start.mdb"
Damit wird diese Datenbank sofort ohne Parameter gestartet.
Exklusiver Zugriff
Wenn Sie Änderungen an einer Datenbank vornehmen wollen, sollten Sie sicherstellen, dass nicht gleichzeitig ein anderer Nutzer Zugriff auf die gleiche Datenbank hat. Deshalb öffnen Sie diese am besten exklusiv, dann erhält jeder folgende Nutzer beim versuchten Zugriff eine Warnung wie in Bild 4 und kann die Datenbank nicht öffnen.
Um den exklusiven Zugriff mit einer Verknüpfung zu automatisieren, geben Sie als Parameter /excl an, also hier
"C:\Office\MSACCESS.EXE"
"G:\ExpertsInside\Start.mdb" /excl
In einer Mehrbenutzerumgebung muss dies natürlich die Ausnahme bleiben, denn alle anderen Nutzer können währenddessen nicht mit der Datenbank arbeiten.
Schreibgeschützte Datenbank
Weniger zur Entwicklung als vielmehr für das Nachschlagen von Daten können Sie eine Datenbank auch mit Schreibschutz öffnen. Dazu geben Sie als Parameter /ro für „read-only“ an, also hier
"C:\Office\MSACCESS.EXE"
"G:\ExpertsInside\Start.mdb" /ro
Beim Öffnen der Datenbank erhalten Sie die gleiche Warnung wegen der schreibgeschützten Datenbank, die Sie auch bekommen würden, wenn Sie im Explorer die Datei selber mit einem Schreibschutz-Attribut gesperrt hätten.
In diesem Zustand können Sie selbstverständlich keine geänderten Entwürfe speichern. Außerdem werden viele Datenbanken mit Auto-Exec-Makro oder automatischen Prozeduren beim Öffnen von Formularen oder Berichten vermutlich auch dauernd Laufzeitfehler auslösen, weil dort häufig Daten in Tabellen zwischengespeichert werden.
Komprimieren und reparieren
Mit den Parametern /compact und /repair lässt sich die genannte Datenbank komprimieren beziehungsweise reparieren. Dazu geben Sie die Parameter wie folgt an:
"C:\Office\MSACCESS.EXE"
"G:\ExpertsInside\Start.mdb" /compact /repair
Eine Reparatur kann nicht schaden, meiner Erfahrung nach ist sie seit Access 2.0 aber kaum noch notwendig.
Natürlich können Sie seit Access 2000 auch in den Optionen für die Datenbank einstellen, dass sie beim Schließen komprimiert werden soll. Diese Einstellung geschieht im Dialog Extras Optionen auf dem Register Allgemein mit der Checkbox Beim Schließen komprimieren. Es kann aber bei größeren Datenbanken mit wenigen Änderungen auf die Dauer schon sehr zermürbend werden, wenn bei jedem Schließen ein lang andauerndes Komprimieren stattfindet.
Manuell komprimieren
Alternativ ließe sich eine Datenbank auch manuell per Menü Extras/Datenbank-Dienstprogramme/Datenbank komprimieren und reparieren verkleinern. Aber versuchen Sie mal, das einem normalen Benutzer beizubringen!
Falls Sie bereits zu den Unglücklichen gehören, die schon versucht haben, ihren Benutzern ein Makro zum Komprimieren zur Verfügung zu stellen:
-
Nein. Es geht einfach nicht. Das Makro würde als Teil der zu komprimierenden Datenbank ebenfalls beendet und könnte sich anschließend ja nicht weiter ausführen. Ein Komprimieren per Makro geht nur beim Speichern in eine zweite Datenbank und hilft Ihnen damit nicht.
-
Die Lösung aus diesem Dilemma ist der Parameter /compact. Ihre Benutzer haben eine Verknüpfung zum normalen Start der Datenbank und eine zweite Verknüpfung zum gelegentlichen Komprimieren.
Komprimierung zentral starten
Um ehrlich zu sein: Eigentlich müssen Sie Ihre Benutzer gar nicht mit so komplizierten Aktionen belasten. Schließlich lässt sich eine solche Verknüpfung genauso gut über das Netzwerk oder zeitgesteuerte Windows-Tasks auslösen.
Da bei einer Mehrbenutzerumgebung sowieso von einem Netzwerk auszugehen ist, können Sie diese Verknüpfung einfach zentral beispielsweise um Mitternacht starten, ohne dass Ihre Benutzer sich jemals mit diesem Thema beschäftigen müssen.
Wenn zu diesem Zeitpunkt kein exklusiver Zugriff als Vorbedingung für das Komprimieren möglich ist, erscheint eine entsprechende Fehlermeldung. Andernfalls wird die Datenbank direkt komprimiert oder repariert.
Wenn Sie nach der Option /compact keine Zieldatenbank eingeben, wird die Originaldatenbank mit der komprimierten Datenbank überschrieben. Um der komprimierten Datenbank einen anderen Namen zu geben, geben Sie danach eine Zieldatenbank an. Wenn Sie für die Zieldatenbank keinen Pfad angeben, wird die Datenbank in Ihrem Ordner Eigene Dateien erstellt.
Arbeitsgruppen und Benutzer
Wenn Sie sich noch nicht mit Zugriffsrechten beschäftigt haben, wird Ihnen eine Arbeitsgruppendatei mit der Endung *.mdw wenig sagen. Darin sind Informationen zu Benutzer- und Gruppenkonten gespeichert. Solange Sie nichts dagegen tun, greift Access auf seine Standardarbeitsgruppendatei System.mdw zurück.
Das Zugriffsrechte-Konzept erfordert irgendwann aber immer, einen neuen Administrator mit beliebigem Namen und Passwort anzulegen und den bisherigen Admin zu löschen oder ihm wenigstens alle Rechte zu entziehen.
Aber dann meldet sich Access beim nächsten Start mit einem Dialog wie in Bild 5 und erzwingt die Anmeldung mit Name und Passwort. Doch Achtung: Access verlangt bereits das Passwort, nicht erst die Datenbank!
Das hat zur Folge, dass Sie sich auf diesem Arbeitsplatz ab jetzt für jede Datenbank anmelden müssen. Das ist nicht nur lästig, sondern vor allem überflüssig. Der Fehler bestand hier bereits darin, nicht vorher die Arbeitsgruppe zu wechseln.
Arbeitsgruppe wechseln
Um also nicht Ihr komplettes Access zu sperren, legen Sie ab Access 2000 mit dem Menü
Extras/Sicherheit/Arbeitsgruppen-Administrator eine neue Arbeitsgruppe an. Das ist eine .mdw-Datei mit beliebigem Namen. Bis Access 97 gab es dafür ein eigenes Programm wrkgadm.exe, welches außerhalb von Access gestartet werden musste.
Der Dialog aus Bild 6 ermöglicht den Wechsel zwischen verschiedenen Arbeitsgruppen. Mit den Schaltflächen Erstellen oder Beitreten legen Sie eine neue Arbeitsgruppendatei wie Beispiel.mdw an oder öffnen eine vorhandene wie System.mdw.
Der Aufruf für die Dateiverknüpfung gibt entsprechend nicht nur die Datenbank-, sondern auch die Arbeitsgruppen-Datei an:
"C:\Office\MSACCESS.EXE" "G:\ExpertsInside\Start.mdb"
/wrkgrp "C:\Dokumente und Einstellungen\Admin\Anwendungsdaten\
Microsoft\Access\Beispiel.mdw"
Erst damit organisieren Sie die Zugriffsrechte brauchbar. Die Konto-Informationen stehen nun in Beispiel.mdw und müssen natürlich gegebenenfalls mit ausgeliefert werden. In dieser Arbeitsgruppe sind dem Standard-Admin alle Rechte entzogen worden, und deshalb fordert Access eine Anmeldung. Jede andere Datenbank in der normalen Arbeitsgruppe mit System.mdw aber lässt sich weiterhin ohne Anmeldung benutzen.
Benutzer angeben
Sie können bei einer solchen Arbeitsgruppen-Anmeldung auch direkt einen Benutzer mit dem Parameter /user und sogar sein Passwort mit /pwd übergeben. Da die Verknüpfungsdatei jedoch recht offen einsehbar ist, sollte sich das auf programmierinterne Aufrufe beschränken.
Start-Dialog ausblenden
Es gibt noch einige weitere Parameter, die eher von untergeordneter Bedeutung sind, etwa /nostartup. Damit können Sie Access ohne das Start-Dialogfeld öffnen. Dabei handelt es sich um die Liste der zuletzt geöffneten Dateien. Bis Access 97 war dies ein Dialog, seitdem ist es der Arbeitsbereich Neue Datei.
Ein Unterschied ist sowieso nur festzustellen, wenn Sie diesen Parameter ohne Datenbank aufrufen:
"C:\Office\MSACCESS.EXE" /nostartup
Den gleichen Effekt erzielen Sie, indem Sie mit Extras/Optionen auf der Registerkarte Ansicht die Checkbox Startaufgabenbereich leeren.
In andere Version konvertieren
Mit /convert können Sie eine Datenbank einer früheren Access-Version zu derjenigen der aktuellen Version konvertieren. Dabei muss die alte Datenbank vor dem Parameter /convert, die neue danach angegeben werden:
"C:\Office\MSACCESS.EXE"
"G:\Alt.mdb" /convert "G:\Neu.mdb"
Genau genommen wird nicht in die aktuelle Version konvertiert, sondern in das Standarddateiformat. Dieses ist auch für Access 2003 normalerweise immer noch dasselbe wie unter Access 2002/XP. Sie können das Standarddateiformat nachsehen und mit Extras/Optionen auf der Registerkarte Weitere ändern.
Profil nutzen
Nur der Vollständigkeit halber soll hier noch der Parameter /profile erwähnt werden. Mit Benutzerprofilen können beispielsweise die Standardeinstellungen der Jet4.0-Engine außer Kraft gesetzt werden.
Dazu müssen aber manuell einige Registry-Schlüssel geschrieben werden, was die Fehleranfälligkeit auch nach vielen übereinstimmenden Berichten in Newsgroups gravierend erhöht.
Makro beim Start ausführen
Die Datenbank kann parametergesteuert beim Start direkt ein Makro ausführen, wenn Sie nach /x und einem Leerzeichen den Namen des Makros angeben:
"C:\Office\MSACCESS.EXE"
"G:\ExpertsInside\Start.mdb" /x macTestMakro
Dann wird direkt das Makro macTestMakro gestartet, allerdings erst nach einem eventuell ebenfalls vorhandenen AutoExec-Makro.
Beliebige Parameter übergeben
Sicherlich der spannendste unter allen Parametern ist /cmd, denn er kann anschließend beliebige Zeichenfolgen an die geöffnete Datenbank übergeben. Er muss als letzter genannt werden, weil alles danach als Argument weitergereicht wird.
Sein Inhalt wird in VBA mit der Funktion Command() ermittelt. Um etwa den Namen der Abteilung zu übergeben, heißt der Aufruf:
"C:\Office\MSACCESS.EXE"
"G:\ExpertsInside\Start.mdb" /cmd Geschäftsleitung
Dann benötigen Sie ein AutoExec-Makro mit der Aktion AusführenCode und deren Argument =StartWithThis(), welches dadurch beim Start automatisch die VBA-Funktion StartWithThis wie in Listing 1 ausführt.
Function StartWithThis()
MsgBox "Dies wird automatisch gestartet!", _
vbInformation, CurrentDb.Name
If Len(Command()) = 0 Then
MsgBox "nix drin"
Else
MsgBox "Command: '" & Command() & "'!"
End If
End Function
Nach dem Hinweis auf den automatischen Start erfolgt entweder die Meldung mit dem Inhalt der Kommandozeile oder der Info, dass diese leer ist.
Aufruf bestimmter Formulare oder Berichte
Diese Technik eignet sich etwa zum Start verschiedener Formulare, die damit von außen aufgerufen werden können. Listing 2 zeigt, wie die von AutoExec automatisch aufgerufene Funktion StartWithThis geändert werden muss.
Function StartWithThis()
If Len(Command()) = 0 Then
MsgBox "nix drin"
Else
Select Case LCase(Command())
Case "artikel"
DoCmd.OpenForm "Artikel"
Case "kunden"
DoCmd.OpenForm "Kunden"
Case "lieferanten"
DoCmd.OpenForm "Lieferanten"
Case Else
MsgBox "Unbekanntes Formular?"
End Select
End If
End Function
Damit die Groß- und Kleinschreibung nicht berücksichtigt wird, muss die in Command() enthaltene Zeichenkette mit der Funktion LCase in Kleinbuchstaben umgewandelt werden. Wenn die Datenbank danach mit
"C:\Office\MSACCESS.EXE"
"G:\ExpertsInside\Start.mdb" /cmd Kunden
aufgerufen wird, erscheint automatisch das Formular Kunden.
Nur in VBA möglich
Eigentlich verspricht die Access-Hilfe, dass im deutschsprachigen Teil von Access, also in Abfragen, Formularen oder Berichten, statt Command() einfach Befehl() benutzt werden kann.
Immerhin wird bei der Eingabe von Test: Befehl() in einem Abfrage-Entwurf dieser Funktionsname auch sofort erkannt, übersetzt und in Test: Command() umgewandelt. Auch der Ausdrucks-Generator führt den Befehl[$] in seiner Liste der eingebauten Funktionen.
Aber sowohl in Abfragen als auch in Formularen oder Berichten führt das Ausführen zur Fehlermeldung „Undefinierte Funktion 'Command' in Ausdruck“. Es scheint, dass Access hier zumindest unfertig ist.
Dies fällt auch in der Access(!)-Hilfe zu Command() auf: "Gibt den Argument-Abschnitt der Befehlszeile zurück, die verwendet wird, um Microsoft Visual Basic [aufzurufen]." Weiter heißt es dort: „Die Command-Funktion aus Visual Basic ist in Microsoft Office-Anwendungen nicht verfügbar.“ Na ja, dafür funktioniert sie in Access-VBA erstaunlich gut.
Test in offener Datenbank
Wenn Sie bei bereits geöffneter Datenbank die Command-Funktion testen wollen, können Sie über Extras/Optionen auf der Registerkarte Weitere bei Befehlszeilenargumente einen eigenen Wert eintragen. Dieser wird jedoch beim nächsten Aufruf mit dem Parameter /cmd-überschrieben.
Auch wenn es selten vorkommt: Um in der Befehlszeile einen Schrägstrich oder ein Semikolon anzugeben, geben Sie das jeweilige Zeichen doppelt ein, also abc//d;;ef, wenn das tatsächliche Passwort abc/d;ef ist.