Lizenzgebühren sparen mit Access + Office 2000 Developer

In Firmen wird Access sehr viel häufiger von Anwendern als von Entwicklern genutzt. Mit der Runtime-Version von Access lassen sich die Anwender mit Access ausstatten, ohne dass dafür ein teureres MS Office-Paket notwendig wäre. Der Beitrag zeigt ein Anwendungsbeispiel und trägt die wichtigsten Details über die Runtime-Version von Access zusammen.

[Access in Firmen] · [Anwendung] · [Praxis-Beispiel] · [FAQ Runtime]


Access in Firmen

Access wird gerne in Firmen verwendet, um kleine Datenbanklösungen zu realisieren. Weil an den meisten Büro-Arbeitsplätzen ohnehin die üblichen Office-Pakete von Microsoft verwendet werden, lizenziert man dann je Arbeitsplatz ein komplettes Office-Paket mindestens in der 'Professional'-Version wegen Access, obwohl sonst eine 'Office Standard Edition' oder eine 'Office Small Business Edition' völlig ausreichen würde. Doch vergleicht man die Preise, so ist die Professional-Variante deutlich teurer als die anderen Versionen obwohl viele Anwender Access nur nutzen, aber nicht mit Access entwickeln.

Ist das wirklich nötig?

Wer Access wirklich will, einerseits viele Anwender von Access hat aber andererseits nur wenige wirkliche Entwickler beschäftigt, hat noch eine andere Möglichkeit: Die Anwender erhalten Access nicht als Vollversion in der Office Professional Edition, sondern in Kombination mit einem kostengünstigeren Office-Paket, bei dem die kostenlose, abgespeckte Runtime-Version von Access nachinstalliert wird.

Hinweise

Anwendung

Oft gibt es in einer Firma nur wenige Mitarbeiter, die mit Access so umgehen können, daß sie auch Datenbanken entwerfen und programmieren können bzw. sollen. Für die Praxis bietet sich daher folgendes Vorgehen an:

Praxis-Beispiel

Folgendes Beispiel habe ich in der Praxis erprobt:

Eine Gruppe von Mitarbeitern sollte Texte erstellen und mit einer Reihe von Begleitinformationen in einer gemeinsamen Access-Datenbank abspeichern. Das Problem wurde wie folgt gelöst:

Das Problem war damit unter Kostengesichtspunkten optimal gelöst. Dabei halfen einige erleichternde Umstände:

Das Beispiel zeigt, daß man mit der Runtimeversion durchaus auch komplexere Probleme lösen kann - ohne Kosten für Access-Lizenzen.

Wichtig: Access 2000 kennt in 'Extras' -> 'Optionen' die Einstellung 'Beim Schließen komprimieren'. In diesem Fall führte die aktivierte Option zu Fehlern, weil jeder, der seine Datenbankinstanz schließt, automatisch ein Komprimieren auslöst, was die Verbindung der anderen aktiven Benutzer trennt und die ihre Datenänderungen nicht mehr speichern können! Leser dieser Seite haben mich inzwischen darauf aufmerksam gemacht, dass es ein spezielles Problem von Windows 98 gewesen sein könnte.

FAQ Runtime

Was ist die 'Runtime'-Version und woher bekommt man sie?
Die Runtime (auch als Laufzeit-Version bezeichnet) von Access ist eine spezielle, abgespeckte Version von Access und wird als Installationsversion mit der Office Developer Edition geliefert. Diese kostet etwa 2500 DM und ist für Entwickler, die Lösungen mit (programmierten) Access Datenbanken erstellen. Damit die Entwickler das gerne tun und mit ihren Produkten gleichzeitig auch Access promoten, bietet ihnen MS die Runtime-Version, die die Entwickler ohne weitere Lizenzzahlungen und in beliebiger Zahl mit ihrer Access-Eigenentwicklung (in der einfachsten Form ist das eine .mdb/.mde-Datenbank) verkaufen/verschenken dürfen.
Vielleicht reicht es aus lizenzrechtlicher Sicht sogar, wenn Ihnen ein Besitzer der Office-Developers Version eine kleine selbstgestrickte Datenbank mit seiner Runtime-Version schenkt, und sie diese dann installieren - (ohne Gewähr). Alternativ können Sie sich auch die Download-Angebote von Microsoft ansehen und die Lizenzbedingungen mit Ihren Zwecken abgleichen.
Was kann die Runtime-Version?
Diese Version von Access kann Datenbanken 'ausführen', bietet aber keine Möglichkeiten, Datenbanken zu verändern. Das Datenbankfenster, also dort wo man zwischen Tabellen, Abfragen, Formularen, Berichten, Seiten und Modulen wählen kann, ist nicht sichtbar und die Runtime kann diese Datenbankobjekte nicht in der Entwurfsansicht öffnen.

Dies scheint zunächst ein Nachteil zu sein, aber andererseits erhält der Anwender so nicht einmal die Werkzeuge, um eine vorhandene Datenbank zu bearbeiten. Unbeabsichtigte oder vorsätzliche Veränderungen sind daher für den Benutzer der Runtime nicht möglich.

Weitere Unterschiede sind eher als Bugs anzusehen, z.B. sollen sich Filter nicht setzen lassen, es gibt Probleme mit DoCmd.OutputTo acOutputTable und mit dem Snapshot-Viewer.

Damit man mit der Datenbank, welche die Runtime öffnet, arbeiten kann, muß ein Startformular oder das Makro 'Autostart' eingerichtet sein.

Wie richtet man ein Formular ein, das beim Öffnen einer Access-Datenbank startet?
Dazu bietet Access drei Möglichkeiten an:
  1. Im Menü 'Extras' -> 'Start...' wählt man im Dropdown-Feld 'Formular/Seite anzeigen ...' das Formular aus, welches beim Öffnen der Datenbank automatisch angezeigt werden soll.

    Diese Lösung ist am einfachsten, aber: Von dem gewählten Startformular aus müssen alle anderen Formulare geöffnet werden können. Hilfe für ein Übersichtsformular bietet Access im Menü 'Extras' -> 'Datenbank-Dienstprogramme' mit der Funktion 'Übersichts-Manager' an. Erklärungen dazu finden Sie in der Access Hilfe.

  2. Man legt ein Makro mit dem Namen 'AutoExec' an. In diesem Makro kann man das Öffnen von einem oder mehreren Formularen festlegen, indem man für jedes Formular die Aktion 'ÖffnenFormular' hinzufügt.

    Diese Lösung hilft, wenn beim Start gleiche mehrere Formulare geöffnet und einige zusätzliche Aktionen durchgeführt werden müssen.

  3. Access kann beim Start mit einer Befehlszeilenoption aufgerufen werden, die ein beliebiges Makro startet. Dazu legt man einen Link auf dem Desktop oder im Startmenü an, der so aufgebaut ist:

    "C:\PfadZuAccess\MSACCESS.EXE" "W:\PfadZurDatenbank\DatenBank.mdb" /x MakroName

    Der Link beginnt mit dem Pfad zu Access oder zur Runtime-Version, es folgt der Pfad zur Datenbank und dann kommt die Startoption /x mit einem Leerzeichen und dem Namen des aufzurufenden Makros (plus weitere Startoptionen, von denen Access ja genug bietet)

    Diese Lösung empfiehlt sich dann, wenn man ein Netzwerk hat und mehrere Benutzer mit der gleichen Datenbank arbeiten sollen. Durch den Link kann man nämlich beliebige Makros starten, es ist also möglich, für verschiedene Benutzer jeweils eigene Startformulare zu zeigen, so dass man nur eine Datenbank für mehrere Aufgaben verwenden kann: Ein Benutzer sieht nur Formulare zur Datenerfassung, der nächste Benutzer sieht nur Formulare zur Datenauswertung ...

Für alle Lösungen gilt: Ein einmal geschlossenes Formular kann nur noch durch programmierte Hilfsmittel (z.B. Schaltflächen in anderen Formularen) wieder geöffnet werden. Das heißt umgekehrt, dass man den Anwender von Formularen aussperren kann, wenn man ihm keine Möglichkeit programmiert, diese zu öffnen. Nur mit der Vollversion von Access bekäme er wieder Zugang zu solchen Formularen.
Falls der Anwender irgendwann alle Formulare geschlossen haben sollte, kann er die Datenbank nicht mehr verwenden. Um die Arbeit fortzusetzen, muss er die Access Runtime schließen und mit der Datenbank erneut starten. Bauen sie also entsprechende Sicherheitsabfragen in Ihre Formulare ein.

Kann ich meine Datenbanken auf einfache Art in der Runtime ausprobieren?

Wer seine Datenbank auf Tauglichkeit für die Verteilung an Runtime-Benutzer testen möchte, kann sie mit der Funktionalität der Runtime-Version auf zwei Arten ausprobieren:

Ist die Runtime an eine spezielle Datenbank (MDB/MDE) gebunden?

Nein, für einen Rechner reicht einmaliges installieren der Runtime aus. Danach kann man mit der Runtime jede Access-Datenbank bearbeiten - soweit die Datenbank an die beschränkten Möglichkeiten der Runtime angepasst ist.

Kann man das Betriebssystem frei wählen?

Die Runtime läuft auf jedem Betriebssystem - solange es Windows heißt. Für den Mac gibt es zwar MS Office, für dieses bietet MS aber kein Access, ergo gibt es dort keine Runtime.

Wie groß ist die Runtime-Installation?

Bei Access 97 gab es noch eine Version, die mit 8 MB auskam. Access 2000 belegt dagegen stolze 128 MB - über 50 MB gehen dabei auf das Konto des Internet-Explorer, der automatisch der Installation hinzugefügt wird. Bei den neueren Versionen fragt sowieso niemand mehr nach dem Installationsumfang …

Was passiert mit älteren Datenbanken?

Wenn die Runtime eine Datenbank öffnen soll, die mit einer früheren Access-Version erstellt wurde, dann möchte sie diese gerne kompilieren oder sie erlaubt nur den Lesezugriff auf die Datenbank. Wenn kein Kompilierfehler auftritt (bei VBA kommt das häufig vor, beispielsweise wenn Autostart-Makros enthalten sind) arbeitet die Runtime dann mit der kompilierten Version der Datenbank.

Kann man mit der Runtime auch Datenbanken warten?

Ja. Bei Fehlern muß die Datenbank nicht auf einen anderen Rechner verschoben werden. Die Startoptionen /compact und /repair (wird bei Access 2000 automatisch mit /compact erledigt) funktionieren auch mit der Runtime-Version von Access. An einer anderen Stelle habe ich ein einfaches Wartungsskript beschrieben, welches sowohl mit der Runtime, als auch mit der normalen Access-Version funktioniert.

Was ist der Unterschied zwischen Runtime und MDE?

Beides sind völlig unterschiedliche Konzepte, daher ist ein Vergleich nicht sinnvoll. Bei der MDE-Datei schützt man den Code, indem man ihn kompiliert und den Quellcode aus der MDB nicht in die MDE-Datei kopiert. Formulare, Berichte und Module mit VBA-Code können nicht mehr in die Entwurfsansicht geschaltet werden, das Hinzufügen ist ebenfalls nicht mehr möglich. Tabellen und Abfragen sind jedoch nach wie vor frei zugänglich und veränderbar.

Bei der Runtime verhindert die installierte Access-Version die volle Kontrolle über die Datenbank. Sobald die Datenbank auf einen Rechner mit der Vollversion von Access kopiert wird, kann sie normal bearbeitet werden.

Läuft gerade die Runtime oder die Vollversion?

Gelegentlich werde ich gefragt, ob man in VBA feststellen kann, ob die Datenbank gerade von einer Vollversion oder von der Runtime betreut wird. Nun, dafür gibt es einen Befehl:

SysCmd(acSysCmdRuntime)
liefert TRUE zurück, falls die Runtime aktiv ist. Wenn man von außen, z.B. mit einem VBS prüfen will, ob auf dem System eine Vollversion oder eine Runtime verfügbar ist, dann hilft diese Anweisung
CreateObject("Access.Application").SysCmd(6)
Auch hier ist der Rückgabewert TRUE, falls nur die Runtime auf dem System installiert ist.
Was ist die MDSE?

Die MSDE ist eine andere Datenbankmaschine (angelehnt an den SQL-Server), die ebenfalls für Access eingesetzt werden kann, nämlich dann, wenn man ein Projekt (*.adp) anlegt. Die MSDE ist ebenfalls kostenlos (ohne Gewähr, Installationsdatei "X:\SQL\X86\SETUP\SETUPSQL.EXE" auf der ersten Office 2000 CD). Sie soll für bis zu 5 Nutzer geeignet (Access JET eher nur für einen Benutzer) und kompatibel zum SQL-Server sein.
Die Nutzer brauchen in jedem Falle die Access-Runtime, zusätzlich muss aber auf dem Server (oder einem Rechner eines Nutzers) die MSDE installiert und ein Dienst gestartet werden.