1 Access Grundlagen 1.1 Was ist MS-Access? Access ist ein relationales, also auf Zellen in waagerechten und senkrechten Reihen aufgebautes Datenbankprogramm unter MicrosoftWindows. Es ist ein Microsoft-Produkt und bildet mit vor allem Word und Excel das sogenannte Microsoft-Office. Die wesentlichen Anwendungen liegen im Anlegen, Ordnen und Durchsuchen von tabellenartigen Listen, in denen auch begrenzt gerechnet werden kann. Es ist wie alle Windows-Anwendungen menüorientiert. Viele Menüs entsprechen den schon aus anderen MicrosoftWindows-Programmen bekannten. Folgendes Kurzskript bezieht sich auf die Programmversion ACCESS 2000. 1.2 Objekte in MS-Access MS-Access unterscheidet als Datenbanksystem sogenannte Objekte. Solche Objekte sind: Tabellen Eine Zusammenstellung von Daten zu einem Fall (etwa eine Person) und zu mindestens einer Kategorie (z.B. Vorname). Die Tabelle ist aus Zeilen und Spalten bzw. damit aus Zellen aufgebaut. Jede Zelle trägt eine Date, z.B. den Vornamen einer Person. Abfragen Abfragen stellen einen Teil der Tabelle aus einer bestimmten, vom Benutzer ausgewählten Perspektive dar. So kann man in einem Abfragefenster etwa nur die Personen aus dem Ort "Aflenz" darstellen. Ebenso kann man sich aber auch etwa den Mittelwert der Variable "anzahl" darstellen lassen. Formulare Formulare enthalten die Daten einer ganzen Tabelle oder einer partiellen Abfrage, bilden diese aber nicht listenförmig, sondern karteikartenmäßig ab. Ein Formular enthält daher alle Daten nur eines Falles, etwa einer Person. Berichte Auch Berichte enthalten die Daten einer Tabelle oder einer Abfrage. Die Darstellung ist wieder anders, nach der Art einer Zusammenfassung (z.B. eine Zusammenstellung aller versandten Produkte mit Preis, Menge, Name etc.). Daten in Berichten können nur ausgedruckt, aber nicht verändert werden. Seiten Hier werden sogenannte Datemzugriffsseiten erzeugt, die der Darstellung von Access-Daten im Netz dienen. Makros Makros sind Befehlsfolgen, die unter einem Namen an beliebiger Stelle ausgeführt werden können. Für Fortgeschrittene! Module Mit einer eigenen Programmiersprache in MS-Access können komplizierte Prozeduren erstellt werden. Nur für Fortgeschrittene! Achtung: Access speichert alle Objekte unter einem übergeordneten Datenbanknamen. Über das Symbol für Datenbankfenster (drei ineinander geschobene Karteiblätter) gelangt man in ein Übersichtsfenster, in dem man über eine Registerzeile jede Objektart anwählen kann; dann bekommt man alle verfügbaren, also gespeicherten Objekte angezeigt und kann sie öffnen. Dieses Datenbankfenster ist normalerweise stets geöffnet und befindet sich etwa hinter Ihrem Tabellenblatt auf dem Arbeitschirm von Access. Wenn Sie dieses Fenster schließen, verlassen Sie auch die Datenbank! 1.3 Ansichten in MS-Access MS-Access unterscheidet sogenannte Ansichten von Objekten (ausgenommen Makros und Module). Solche Ansichten sind unter dem Ansichten-Listensymbol in der Symbolleiste (Dreieck auf Lineal, ganz links in der Leiste) erreichbar, und zwar: Datenblattansicht Diese zeigt eine Tabelle. Entwurfsansicht Diese zeigt den organisatorischen Hintergrund einer Tabelle; hier definieren Sie Felder=Kategorien, die ein Fall umfassen soll. Natürlich können auch Abfragen, Formulare und Berichte im Entwurf behandelt werden. Formularansicht Diese entsteht nur, wenn das Objekt Formular dargestellt wird. Sie können natürlich auch ein Formular in der Entwurfsansicht darstellen lassen. Seitenansicht Wie in anderen Windows-Programmen auch bietet Ihnen die Seitenansicht eine WYSWYGAnsicht einer auszusdruckenden Seite. Im Dateimenü findet sich dazu die Option der Seitenansicht. 2 Definition und Manipulation der Daten Um mit einer Datenbank sinnhaft arbeiten zu können, muß der Benutzer Daten speichern, abfragen und in der Regel auch verändern können. In der ersten Phase müssen Daten erfaßt und gespeichert werden, was anhand des entwickelten konzeptuellen Modells (s.o.) zu geschehen hat. Bei allen Operationen mit und auf der Datenbank kommt der Konsistenz (semantic integrity) eine zentrale Rolle zu. Darunter ist die Widerspruchfreiheit innerhalb der Datenbank zu verstehen. Alle Operationen, welche die Konsistenz einer Datenbank erhalten, werden als Transaktionen bezeichnet. Dazu gehören einfache Abfragen genauso wie Mutationen (update), bei welchen bestimmte Ausschnitte einer Datenbank verändert werden dürfen. Sämtliche Transaktionen und jene Operationen, die nicht konsistenzerhaltent sind, nennt man Datenmanipulationen. Um diese Vorgänge - Datendefinition und Datenmanipulation - für ein DBMS aufzubereiten, verwendet man zum einen die Datendefinitionssprache (Data Definition Language, DDL), um eine Datenbank nach einem in eben dieser Sprache beschriebenen Modell zu errichten und zum anderen die Datenmanipulationssprache (Data Manipulation Language, DML), um vornehmlich Transaktionen vornehmen zu können. Diese Sprachen sind nicht immer so exakt geschieden, manche Systeme sehen diese Sprachen nur als zwei Ausformungen ein und derselben "Systemsprache", die auf unterschiedlichste Weise klassifiziert wird. Die meisten benutzerorientierten DBMS (für Anwendungen, in denen der Benutzer zugleich Datenbankadministrator ist) kennen an ihrer Oberfläche diese Unterscheidung nicht; dem Anwender wird daher meist ein einheitliches Werkzeug für sämtliche Operationen zur Verfügung gestellt. 1. Dabei kann es sich einerseits um selbständige Sprachen handeln, wenn sämtliche für Datenmanipulationen notwendigen Befehle und Anweisungen in einer systemspezifischen Kommandosprache enthalten sind, und andererseits um eingebettete Sprachen, wenn sie nur im Zusammenhang mit einer Programmiersprache (host language) verwendet werden können. Bei letzterer müssen alle Manipulationen in der jeweiligen Programmiersprache formuliert werden. 2. Werden die entsprechenden Daten als Menge in ihrer Gesamtheit beschrieben, spricht man von deskriptiven Sprachen. Im Gegensatz dazu werden bei der Verwendung von prozeduralen Sprachen jene Operationen formuliert, aufgrund derer man zu bestimmten Ergebnissen zu kommen wünscht. 3. In der logischen Art des Zugriffs auf Daten unterscheidet man weiters mengeorientierte Sprachen, die logische Mengenzugriffe gestatten und tupelorientierte, welche konkret auf spezifizierte Tupeln bzw. Datensätze oder Records zugreifen können. Sämtliche dieser angführten Sprachformen sind untereinander nahezu beliebig kombinierbar. Nachdem auch für jedes Datenmodell im wesentlichen eine eigene DDL bzw. DML notwendig ist, stehen wir heute vor einer Vielzahl höchst unterschiedlicher "Datenbanksprachen", ein Faktum, das dem Benutzer nicht gerade entgegenkommt, der entweder gezwungen ist, mit unterschiedlichen Systemen zu arbeiten oder einfach Datenbestände unterschiedlichster Provenienz zu verwenden gedenkt. Eine Abhilfe wird durch moderne Softwarepakete geschaffen, welche die unterschiedlichen Sprachen durch graphische oder pseudo-natürlichsprachliche Benutzeroberflächen abzulösen versuchen. Dabei lassen sich die Daten entweder direkt-manipulativ über Knöpfe und Fenster manipulieren oder durch einen zusätzlichen "Interpreter", der natürliche Sprache mit eingeschränktem Wortschatz in eine DML gleichsam "übersetzt". Beide Lösungen scheinen für den Anfänger bequemer und unkomplizierter zu sein, haben bis jetzt den Leistungsumfang von komplexen Datenbanksprachen aber noch nicht erreichen können. 3 Abfragen formulieren 3.1 1. Auswahlfragen Am einfachsten ist es, mit Hilfe des Auswahlabfragen-Assistenten Fragemuster zu formulieren. Man öffnet über das Symbol für Neues Objekt die Abfrage. Im nun erscheinenden Dialogfeld wählen Sie die Option Auswahlabfragen-Assistent. Abfragen basieren auf vorhandenen Datenbanken bzw. Tabellen. 1.Schritt mit dem Assistenten: Im Assistenten wählt man also zuerst die benötigte Tabelle in der Zeile Tabellen/Abfragen aus. Man kann auch schon vorher gespeicherte Abfrageobjekte benutzen. Dann kann man aus der Spalte Verfügbare Felder welche auswählen und mittels des Pfeilsymbols nach rechts in die Spalte Ausgewählte Fenster einfügen. Mit dem Symbol für den Doppelpfeil nach rechts würden Sie alle verfügbaren Felder einfügen (analog dazu entfernen die Pfeiltasten nach links Felder aus der Auswahlliste) Mit dem Schaltfeld Weiter bewegen Sie sich in den nächsten Schritt. 2.Schritt: Hier legen Sie fest, daß eine Detailabfrage gewünscht wird. 3.Schritt: In einem weiteren Fenster geben Sie den Namen für Ihre Abfrage (=Objekt) ein und legen fest, daß Sie die Abfrage öffnen wollen. Dann stellen Sie Ihre Abfrage über das entsprechende Schaltfeld fertig. Im nun erscheinenden Abfragedatenblatt sehen Sie nur mehr jene Felder (=Spalten), die sie mittels dem Assistenten ausgewählt hatten. In einem kürzeren Verfahren begibt man sich aus dem Tabellendatenblatt über das Symbol für Neue Objekte und die Abfrage und die Entwurfsansicht ins Abfragentwurfsblatt. 3.2 Abfragen erweitern Hätten Sie nun noch weitere Felder für eine Abfrage benötigt, müssten Sie die alte Abfrage verwerfen und mit dem Assistenten eine neue initiieren, sicherlich ein mühevoller Vorgang. Deshalb kann man Abfragen erweitern. Dazu aktiviert man in einer vorhanddenen Abfrage das Symbol für Ansicht und dann die Entwurfsansicht der Abfrage. In dieser Ansicht erscheint in einen eigenen Fensterteil die Liste der in der Tabelle insgesamt enthaltenen Felder. Mit einem Doppelklick auf das gewünschte Feld wird dieses der Abfrage hinzugefügt und erscheint im Entwurf. Nach dem Schließen des Entwurffensters und dem Speichern der neuen Abfrage öffnen Sie das Abfragedatenblatt über das Symbol für Datenbankfenster. Dort erscheinen dann alle ausgewählten Felder. Auf kürzere Weise kann man die neue Abfrage auch durch Klicken auf das rote RufzeichenSymbol in der Entwurfsansicht ausführen und direkt ins Abfragedatenblatt zurückkehren. Eine einmal gespeicherte und nicht mehr benötigte Abfrage löscht man insgesamt am einfachsten, indem man im Datenbabnkfenster unter dem Objekt "Abfrage" die Abfragedatei mit der rechten Maustaste auswählt und im erscheinenden Kontextmenü die Option "Löschen" aktiviert. 3.3 Sortieren im Abfragedatenblatt Indem man sich mit dem Cursor in irgendeine Zelle des Abfragedatenblatts bewegt kann man über Menü und Befehle Datensätze/Sortierung/Aufsteigend die Datensätze im Abfragedatenblatt entsprechend der Spalte, in der Sie sich befanden, sortieren. Entsprechend sind über Datensätze/Filter die Datensätze auch im Abfragedatenblatt filterbar. 3.4 Komplexe Suchaktionen In den komplexen Abfragemustern geht es nicht nur darum, bestimmte Felder aufzusuchen, sondern darum, nur bestimmte Felder bestimmten Inhalts zu finden. Man öffnet aus dem Tabellendatenblatt mittels des Symbols Neues Objekt/Abfrage eine neues Abfrageentwurfsblatt. Aus der Liste der verfügbaren Felder wählt man etwa die Felder "Nachname" und "Geburtsjahr" aus. In der Zeile Kriterien des Entwurfsfenster gibt man für den Nachnamen eine Zeichenkette (z.B. [Nachname]="breidler") und für das Geburtsjahr eine bestimmte Bedingung (z.B. [Geburtsjahr]>1855) ein. Damit hätte man für das Jahr 1869 alle Kinder eines bestimmten Nachnamens und bis ins 14.Lebensjahr alt selektiert. Damit hat man eine einfache "und"-Bedingung formuliert: Der auszusuchende Datensatz muß in jedem der ausgewählten Felder die bestimmte Zeichenkette bzw. die mögliche Zahl aufweisen. Füllt man in der Entwurfsansicht der Abfrage für das Textfeld (Nachname) auch die Zeile oder aus, so setzt man Entweder-Oder-Bedingungen. Ein Feld muß dann über verschiedene Datensätze nicht mehr exakt die gleiche Information, sondern bloß eine der angegebenen enthalten (z.B. den Nachnamen Maier oder Meyer). Beachten Sie aber, daß Sie die für das Zahlenfeld (Geburtsjahr) gesetzte Bedingung auch auf die erweiterte Namensgebung beziehen! Bei allen Suchaktionen sind auch sogenannte Wildcards oder Platzhalter angebbar. Ein "?" steht für einen beliebigen Buchstaben. Zwei "??" stehen für zwei beliebige aufeinanderfolgende Buchstaben. 4 Berechnungen durchführen Berechnungen bedeuten nicht nur die Auswahl von Daten, sondern auch deren Berechnung, etwa die Summierung aller Auftragswerte oder eingegangenen Mitgliedsbeiträge etc. Berechnungen sind demnach Abfragen, in die berechnete Felder, Aggregierungsfunktionen oder gruppierte Daten eingefügt werden. 4.1 Berechnete Felder Man läßt sich derart neue Felder mit berechneten Inhalten erstellen. Dazu öffnet man über das Symbol für Neues Objekt eine Abfrage und ein Abfrageentwurfsfenster. Man wählt in der Feldzeile eine leere Zelle und gibt dort etwa ein: Alter: [Zähljahr] - [Geburtsjahr]. Nachdem es sich um eine neue Spalte handelt, muß man in die Tabellenzeile jetzt auch die verwendete Tabelle eintragen. Dann drückt man das Symbolfeld mit dem roten Rufzeichen. Auf diese Weise wird eine neue Spalte erzeugt, die das Alter der Personen als Ergebnis der Subtraktion des Geburtsjahreswertes vom Zähljahreswert enthält. Würde man dies nur für die Frauen tun wollen, so würde man im Abfrageentwurfsfenster auch das Feld "Sex" aus der Liste der verfügbaren Felder auswählen und als Kriterium "0" eingeben. Die im Abfragefenster erscheinende Spalte markiert man im Spaltenkopf, wählt im Menü Berbeiten die Option Kopieren, wechselt in die Tabelle, markiert dort einen neuen Spaltenkopf (leere Spalte!) und wählt aus dem Menü Bearbeiten die Option Einfügen. Nun fügt Access die berechneten Daten in die Tabelle ein. 4.2 Aggregierungsfunktionen Aggregierungsfunktionen bilden z.B. Summen oder Mittelwerte über eine Reihe von Daten. Zu diesem Zweck fügen Sie im Abfrageentwurfsfenster über das Menü Ansicht und dem Befehl Funktionen eine Funktionszeile in das Entwurfsfenster ein. In diese Zeile kann man über ein Pfeilsymbol eine verfügbare Funktion einfügen. Zum Beispiel könte man wie oben das Feld Alter erzeugen, das Feld Sex in der Kriteriumszeile auf "0" beschränken und aus der Funktionszeile für Alter den Mittelwert auswählen. Als Ergebnis würde Access den arithmetisch mittleren Alterswert aller Frauen errechnen. 4.3 Datengruppierung Will man die Berechnung solcher spezifischer Mittelwerte in einem und die Ergbenisse vergleichbar haben, so muß man die Daten gruppieren.Im angesprochenen Beispiel würde man die Daten über die Spalte "Sex" gruppieren. Dazu begeben Sie sich wieder ins schon erstellte Abfrageentwurfsfenster. Dort wählen sie das Feld "Sex" aus. In die Funktionszeile schreiben Sie oder wählen sich die Funktion Gruppierung aus. Access gruppiert automatisch über die gleichen Einträge (in unserem Falle "1" oder "0"). Access wird im Abfragedatenblatt in der Spalte "Sex" eine Zeile für Männer und eine für Frauen einrichten und dort das jeweilige mittere Alter eintragen. 5 Formulare und Berichte 5.1 Formulare erstellen Ein Formular erleichtert die Eingabe von Daten in eine Tabelle. Um in ein Formular zu gelangen wählt man in der Datenblattansicht einer Tabelle das Symbol Neues Objekt und aus der Anbotsliste das objekt Formular. Im darauf erscheinende Fenster Neues Formular wählt man vorerst die Möglichkeit des Formularassistenten. Im Fenster des Formularassistenten überträgt man dann über die Pfeiltaste nach rechts die benötigten Felder in die Rubrik <>. In einem weiteren Fenster des Assistenten wählt man dann den Layouttyp des Berichts aus vier angebotenen Möglichkeiten (einspaltig, tabellarisch, Datenblatt, in Blöcken). Dann können Sie in einem weiteren Dialogfenster des Assistenten einen Stil für ihr Formular aussuchen. Schließlich geben Sie einen Namen für Ihr Formular ein, bestätigen die Option für Formular öffnen und stellen es fertig. In der Entwurfsansicht können Sie jedes Formular layoutieren. Dort gibt es eine ganze Reihe von Möglichkeiten, die hier nicht aufgeführt werden können. Achtung: Ein solches Formular kann natürlich nur auf der Basis mindestens eines im Tabellenentwurf in die Tabelle eingetragenen Datensatzes erstellt werden. Soll eine leere Tabelle mittels Formular aufgefüllt werden, so können Sie ein selbst definiertes Formular als Vorlage benutzen. Dazu geben Sie unter dem Menü Extras und dem Befehl Optionen im Register Formulare/Berichte unter Formularvorlage den Filenamen Ihres bereits für eine andere Tabelle erstellten Formulars ein. Dieser Name wird dann während der Formularerstellung mit dem Assistenten anwählbar sein. 5.2 Berichte erstellen Ein Bericht ist eine Art Formular, aber ein nicht auf Tabellen anwendbares, sondern nur aus Tabellen erstell- und ausdruckbares. Über das Symbol für Neues Objekt und den Punkt Bericht kommen Sie in das Fenster Neuer Bericht. Dort kann man den Berichts-Assistenten aufrufen und sich von ihm wie von anderen ObjektAssistenten führen lassen (Abfrageassistent, Formularassistent, Tabellenassistent etc.) oder gleich einen Berichtstyp (Einspaltig oder Tabellarisch) auswählen. Empfohlen wird aber fürs erste die Verwendung des Berichtsassistenten, der die Auswahl von in den Bericht eingehenden Variable (=Felder, Spalten) ermöglicht. Fortgeschrittene können dies natürlich über die Entwurfsansicht des Berichts tun. © Peter Teibenbacher