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.

Vergleicht man die Preise, so ist die Professional-Variante zwischen 200 - 700 DM teurer (je nach Straßenpreis, Update bzw. Vollversion, Edition Small Business oder Standard).

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: Access nicht als Vollversion in der Office Professional Edition, sondern als kostenlose, abgespeckte Runtime-Version.

Hinweise

  • Alle Angaben zu Lizenzen sind ohne Gewähr und beziehen sich auf die normale Office-Lizenz. Ob die Erfahrungen auf andere Lizenzmodelle von MS ('Open Licence') übertragbar sind, wurde nicht geprüft.

  • Die hier wiedergegebenen Erfahrungen wurden mit Office 2000 gewonnen.

  • Diese Beschreibung soll eine Idee für einen sinnvollen, kostensparenden Einsatz von Access geben. Man sollte sich in jedem Falle vor dem Einsatz einer eigenen Lösung versichern, daß diese mit den geltenden Lizenzbedingungen verträglich ist.

  • Eine ergänzende Info zum Thema Access 2003 und 2007 gibt es auf Heise.de.

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:

  • Die Entwickler in der Firma erhalten (mindestens) die Office Professional-Edition.

  • Die Datenbanken werden so geschrieben, daß beim Öffnen ein Formular startet, über das alle übrigen Formulare, Berichte und Funktionen, mit denen der Anwender arbeiten darf, ausführbar sind.

  • Ein Mitarbeiter erhält die Aufgabe, aus den Datenbanken der anderen Entwickler Installationspakete zu erstellen. Er benötigt dafür eine Office Developer-Edition.

  • Die reinen Anwender erhalten eine Standard oder Small Business Edition und zusätzlich wird auf ihren Rechnern die Access-Runtime-Version installiert.

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:

  • Auf den Rechnern der Mitarbeiter wurde jeweils die Access-Runtime Version installiert.

  • Die Datenbank befand sich auf einem Windows 98 Rechner im Netzwerk, auf dem ebenfalls nur eine Runtime (für Wartungsarbeiten wie 'Datenbank komprimieren') installiert war.

  • Jeder Mitarbeiter erhielt auf dem Desktop ein Icon, welches einen Link auf die Datenbank darstellte.

  • Ein Wartungsskript übernahm die tägliche Datensicherung der Access-Datenbank

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

  • Die in Access gespeicherten Daten wurden veröffentlicht, es gab also kein Problem mit der Geheimhaltung.

  • Jeder Mitarbeiter bearbeitete nur die von ihm erstellten Datensätze, so daß Konflikte auf Datensatzebene praktisch nicht auftraten.

  • Selbst wenn nur die Durchsicht der Datensätze notwendig war, betrug die Zeit zwischen der Übermittlung zweier Datensätze über das Netzwerk ca. 10 min. so daß die Netzwerkbelastung auch bei mehreren Benutzern mäßig war.

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).
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 man die Runtime 'mal ausprobieren ?
Die Funktionalität der Runtime-Version kann man auch mit einem ganz normalen Access aus der Professional-Edition ausprobieren, denn mit einem speziellen Schalter kann man bei Access den Runtime-Modus erzwingen. Zum Ausprobieren klickt man mit der rechten Maustaste auf den Desktop, wählt 'Neu' -> 'Verknüpfung' aus und gibt folgendes ein:

"C:\Programme\Microsoft Office\Office\Msaccess.exe" "C:\Eigene Dateien\MeineDaten.mdb" /runtime

Der erste Teil ist der Pfad zum normalen Access, der zweite Teil der Pfad zu einer beliebigen Datenbank und der dritte Teil ist der Schalter '/runtime'

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.
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.