MSAccess: Difference between revisions
| (One intermediate revision by the same user not shown) | |||
| Line 59: | Line 59: | ||
{| border=1 cellpadding=2 cellspacing=0 | {| border=1 cellpadding=2 cellspacing=0 | ||
|- | |- | ||
|MEMO | |MEMO | ||
|max. 64.000 Zeichen | |max. 64.000 Zeichen | ||
| Line 78: | Line 67: | ||
|max. 255 Zeichen | |max. 255 Zeichen | ||
|VARCHAR(x) wird in TEXT mit der Länge x übersetzt. | |VARCHAR(x) wird in TEXT mit der Länge x übersetzt. | ||
|} | |} | ||
====Eingabeformate==== | ====Eingabeformate==== | ||
| Line 91: | Line 75: | ||
Adressen-Datenbank | Adressen-Datenbank | ||
===Tabellen bearbeiten=== | ===Tabellen bearbeiten=== | ||
| Line 345: | Line 327: | ||
*SQL: SQL.DOC | *SQL: SQL.DOC | ||
*SQL für Dummies | *SQL für Dummies | ||
Latest revision as of 20:36, 12 March 2007
Einleitung[edit]
MS Access ist eine relationale Datenbank bzw. Database Managment System (DBMS). Daten werden in der Regel mit Hilfe von Formularen aus einer oder mehreren Tabellen angezeigt oder geändert. Formulare beziehen sich immer auf ein Datensatz. Formulare können mit dem Formular-Assistenten erstellt werden. Berichte dienen dazu die Daten aufzubereiten und auszudrucken. Abfragen dienen dazu Daten unter einem festzulegenden Kriterium aus der Datenbank zu filtern. Diese gefilterten Datensätze können dargestellt oder manipuliert werden. Alle Objekte einer Datenbank (Tabellen, Berichte,...) werden im Datenbankfenster dargestellt und bearbeitet. Eine Datenbank kann in Front-End und Back-End aufgeteilt werden ([[1] p.206). MS Access unterstützt SQL-89 Level 1 mit einigen Erweiterungen. Access ist in der Lage über die ODBC-Schnittstelle auf SQL-Datenbanken zuzugreifen. In Access wird allgemein nur mit der DML gearbeitet.
Mehrbenutzerbetrieb[edit]
Tips für das Bearbeiten von Datenbankobjekten in einer Mehrbenutzerumgebung
- Obwohl Sie den Entwurf einer Datenbank erweitern können, während andere Benutzer daran arbeiten, ist es sinnvoll, die Mehrzahl der Objekte zu entwerfen, bevor andere Benutzer die Datenbank für die gemeinsame Nutzung öffnen können. Wenn Sie umfassende Änderungen am Entwurf vornehmen möchten, können Sie sicherstellen, daß außer Ihnen niemand mit der Datenbank arbeitet, indem Sie beim Öffnen der Datenbank im Dialogfeld Datenbank öffnen die Option Exklusiv auswählen.
- Wenn ein anderer Benutzer eine Tabelle geöffnet hat oder sich Daten in Abfragen, Formularen oder Berichten ansieht, die auf der Tabelle basieren, können Sie keine Änderungen am Tabellenentwurf vornehmen. Microsoft Access teilt Ihnen dann mit, daß die Tabelle schreibgeschützt ist.
- Da es nicht möglich ist, sich Daten in einer Tabelle anzusehen, die ein anderer Benutzer in der Entwurfsansicht geöffnet hat, sollten Sie eine Tabelle nur solange wie unbedingt nötig in der Entwurfsansicht geöffnet haben, wenn andere mit der Tabelle bzw. mit Abfragen, Formularen oder Berichten, die auf der Tabelle basieren, arbeiten möchten.
- Wenn Objekte voneinander abhängig sind, aktualisieren Sie diese stets gleichzeitig, um zu vermeiden, daß andere Benutzer inkonsistente Versionen der Objekte öffnen. Wenn Sie z.B. einem Formular Felder hinzufügen möchten, achten Sie darauf, daß Sie die Felder zunächst der zugrundeliegenden Abfrage hinzufügen, bevor Sie das Formular aktualisieren.
- Wenn ein anderer Benutzer eine Abfrage, ein Formular oder einen Bericht geöffnet hat, und Sie nehmen Änderungen daran vor, muß diese(r) Benutzer das geänderte Objekt schließen und erneut öffnen, um die aktuellste Version zu erhalten. Mit Visual Basic für Applikationen-Module können andere Benutzer die aktualisierten Funktionen oder Sub-Prozeduren erst ausführen, wenn sie die Datenbank schließen und erneut öffnen.
- Wenn Sie die an einem Makro vorgenommenen Änderungen speichern, während ein anderer Benutzer das Makro ausführt, können dadurch Fehler bei der Ausführung des Makros auftreten. Um dies zu verhindern, öffnen Sie die Datenbank im exklusiven Zugriff, bevor Sie Änderungen an einem Makro vornehmen.
Wenn Sie einen Datensatz bearbeiten, kann Microsoft Access andere Benutzer automatisch daran hindern, den Datensatz zu ändern, bevor Sie Ihre Bearbeitung abgeschlossen haben. Wenn ein Benutzer exklusiven Zugriff auf einen Datensatz erhält, wird dies Sperrung genannt. Man unterscheidet beim Sperren drei Strategien:
- Keine Sperrungen
- Bearbeitete Datensätze
- Alle Datensätze
Festlegen der Standard-Datensatzsperrung für die Bearbeitung von Datensätzen in einer Mehrbenutzerumgebung[edit]
- Klicken Sie im Menü Extras auf Optionen.
- Klicken Sie auf die Registerkarte Fortgeschritten.
- Klicken Sie im Feld Standard bei Datensatzsperrung auf die gewünschte Option.
Tabellen[edit]
In der Datenblattansicht sieht man eine ganze Tabelle. In der Tabellen-Entwurfsansicht können Sie eine Tabelle völlig neu erstellen oder Felder einer vorhandenen Tabelle hinzufügen, löschen oder anpassen.
Jede Tabelle muß/kann einen Primärschlüssel haben. Dies kann entweder ein 'AutoWert', d.h. MS Access vergibt jedem neuen Datensatz eine eindeutige ID, ein selbstgewähltes Feld oder mehrere selbstgewählte Felder sein. Ein Primärschlüssel besteht aus einem oder mehreren Feldern deren Werte jeden Datensatz in einer Tabelle eindeutig kennzeichnen innerhalb der Tabelle. Ein Fremdschlüssel hingegen ist eine Menge von Feldern die auf den Primärschlüssel einer anderen Tabelle verweisen, d.h. über den Fremdschlüssel kommt man auf den eindeutigen Datensatz in der zugehörigen Fremd-Tabelle. Für Primärschlüssel wird immer ein Index angelegt.
'*' zeigt den ersten leeren Datensatz an. '?' zeigt den aktuellen Datensatz an 'Ø' zeigt an, daß ein Datensatz gesperrt ist
Tabellen können auch mit Daten anderer Datenbanken verknüpft werden ([[1] p.203).
Normalisierung[edit]
Mit Hilfe der Normalisierung werden Tabellen vereinfacht um die optimale Struktur zu erreichen und Redundanzen zu vermeiden. Es gibt 5 Normalisierungsformen :
- wenn in einem Feld nur atomare Werte stehen
- wenn die 1. Normalform erfüllt ist und jede Nicht-Schlüsselspalte vollständig vom Primärschlüssel abhängt, d.h. die Tabelle nur Daten zu einem Objekt beinhalten, die durch den Primärschlüssel eindeutig beschrieben werden
- wenn die 2. Normalform erfüllt ist und alle Nicht-Schlüsselspalten unabhängig voneinander sind
Der Normalisierungsassistent wird in [[1] p. 211 beschrieben. Allerdings wird darauf hingewiesen, daß der Assistent mit Vorsicht zu verwenden ist und sogar Fehler macht. Außerdem ist es oft aus Performancegründen Redundanzen in eine DB einzubauen. Standardverfahren ist dazu erst die DB zu normalisieren und anschließend selektiv einfzuführen.
Index[edit]
Microsoft Access verwendet die Indizes einer Tabelle so, wie Sie einen Index in einem Buch einsetzen:
Anlegen eines Index[edit]
- Öffnen Sie eine Tabelle in der Entwurfsansicht.
- Klicken Sie im oberen Teil des Fensters auf das Feld, für das Sie einen Index erstellen möchten.
- Klicken Sie im unteren Teil des Fensters auf das Einstellungsfeld für die Eigenschaft Indiziert, und wählen Sie dann Ja (Duplikate möglich) oder Ja (Ohne Duplikate).Wählen Sie Ja (Ohne Duplikate), wenn Sie sicherstellen möchten, daß es nicht zwei oder mehr Datensätze mit identischen Einträgen in einem bestimmten Feld gibt.
Feld-Datentypen[edit]
| MEMO | max. 64.000 Zeichen | |
| TEXT | max. 255 Zeichen | VARCHAR(x) wird in TEXT mit der Länge x übersetzt. |
Eingabeformate[edit]
Unter Verwendung der Eigenschaft Eingabeformat können Sie ein Eingabeformat (gelegentlich auch als "Feldvorlage" bezeichnet) erstellen, das zum Steuern der Eingabe von Daten in ein Feld oder Steuerelement Literalzeichen verwenden. Die Einstellung von Eingabeformaten erfolgt u.a. in der Design-Ansicht eines Formulars.
Beispiel
Adressen-Datenbank
Tabellen bearbeiten[edit]
Tabellenentwurf ändern[edit]
Tabelle öffnen -> rechte Maus -> Tabellenentwurf
Primary Key vergeben[edit]
rechte Maus auf Zeile in der Entwurfsansicht -> primary key
Spalten hinzufügen[edit]
Im Entwurfsmodus einfach eine neue Spalte durch Eintippen anlegen.
Tabellennamen ändern[edit]
Nach Neuanlegen in die Entwurfsansicht wechseln, dann wird man nach dem Namen gefragt.
Feldnamen ändern[edit]
Doppelklick auf Feldheader in der Datenblattansicht.
Daten aus anderen Tabellen nachschlagen[edit]
Am einfachsten verwendet man den Nachschlageassisten ([[1], page 377). Einfach in die Entwurfansicht der Tabelle wechseln und im oberen Fenster im Felddatentyp den Nachschlage-Assistenten auswählen
Tabellen sortieren[edit]
einfach irgendwo in ein Feld der Spalte klicken und Button A->Z drücken. Die Sortierung unterscheidet nicht zwischen Gross- und Kleinschreibung.
Spalten fixieren[edit]
Fixieren heißt die Spalten fest an den linken Rand zu legen. Einfach in ein Feld der Spalte klicken und Menu 'Format->Spalten fixieren' wählen. Rückgängig über Menu 'Format->Spaltenfixierung aufheben'.
Spalten verschieben[edit]
einfach Spalte markieren und mit gedrückter Maus per Drag & Drop verschieben.
Datensätze bzgl. einer Spalten suchen[edit]
In eine Spalte klicken und Menu 'Bearbeiten->Suchen' wählen.
Datensätze in anderen Tabellen Nachschlagen[edit]
in TabellenEntwurf -> Feld selektieren -> unten 'Nachschlagen' anwählen -> GebundenSpalte ist die Spalte des Abfrageergebnises, daß als Datensatz verwendet wird und ist in der Regel der primary key und am besten die erste Spalte der Abfrage. Um zu verhindern, daß dieser primary key in der Auswahlliste angezeigt wird in 'Spaltenbreite' 0 cm eintragen.
Relationen[edit]
Relationen im MS Access Sinn dienen dazu Daten aus verschiedenen Tabellen in Beziehung zu setzen. Ohne Relationen sind keine Abfragen über mehrere Tabellen hinweg möglich, denn ohne das das Datenbankprogramm weiß wie sie die Daten der einen Tabelle mit den Daten der anderen Tabelle in Beziehung setzen soll ist keine sinnvolle Abfrage möglich.
Relationen bearbeiten[edit]
Die Übersicht über die Relationen bekommt man in der Relationübersicht (Tools->Relationships).
Relationen löschen[edit]
In der Relationenübersicht können Relationen markiert und gelöscht werden. Manchmal legt Access eigene Relationen an, obwohl das unnötig erscheint, weil sie beispielsweise bereits existieren. Löscht man derartige Relationen erscheinen sie nach Schliessen und Öffnen der Relationübersicht wieder. Ein Trick sie dauerhaft zu löschen scheint zu sein, die zu löschende Relation von den Eigenschaften her gleich der bereits existieren zu setzen und sie dann zu löschen.
Abfragen[edit]
Abfragen werden auch Views bzw. virtuelle Tabellen genannt, allerdings definiert Access auch DDL SQL Anweisungen als Abfragen und zwar als sogenannte Data Definition Query. Views sind Metadaten und sind daher permanent. Abfragen können auf anderen Abfragen basieren. Die Verschachtelungstiefe liegt bei 50. Abfragen müssen ausgeführt werden. Abfrageresultate sind bearbeitbar (nicht bearbeitbare Abfrageresultate heissen snapshots). Access unterscheidet folgende Abfragetypen:
- Datendefinitionsabfrage,
- Anfügeabfrage,
- Auswahlabfrage.
Es gibt drei Arten von Ansichten einer Abfrage: die Datenblattansicht mit dem Ergebnis der Abfrage, die Entwurfsansicht und die SQL-Ansicht. Bei einer neuen Abfrage müssen zunächst die Tabellen, auf denen die Abfrage arbeitet, ausgewählt werden. Anschliessend müssen die Felder ausgewählt werden. Auswahl eines Feldes durch Doppelklick, Auswahl in Liste oder Drag&Drop, '*' repräsentiert dabei alle Felder. Z.B. kann man sich durch Auswahl eines Feldes alle Einträge bzgl. dieses Feldes auflisten lassen. Standardmässig werden Abfrageresultate in der Reihenfolge des Primärschlüssels dargestellt. Access erzeugt bei einer neuen Abfrage automatisch eine Relation der teilnehmenden Tabellen (das läßt sich abschalten, das hat keinen Einfluß auf das Tabellendesign, sondern bewirkt eine besondere JOIN-Anweisung, die Beziehungseigenschaften können geändert werden).
Abfragen bearbeiten[edit]
Abfragen werden in der Entwurfsansicht oder SQL-Ansicht einer Abfrage erstellt. Im oberen Fenster befinden sich die Tabellen und Abfragen, auf der eine Abfrage arbeitet.
SQL[edit]
Die SQL-Sprache des Microsoft Jet-Datenbankmoduls ist grundsätzlich zu ANSI-89 Level 1 kompatibel. Allerdings sind einige ANSI SQL-Funktionen in der SQL-Sprache des Microsoft Jet-Datenbankmoduls nicht implementiert. Umgekehrt umfaßt die SQL-Sprache des Microsoft Jet-Datenbankmoduls reservierte Wörter und Funktionen, die in ANSI SQL nicht unterstützt werden. Die Benutzerschnittstelle von Access verbirgt SQL hinter den Abfragen. Eine Abfrage wird immer in SQL übersetzt. Man kann im Abfragefenster jederzeit auf die SQL Darstellung umschalten. Es gibt allerdings einige Befehle wie z.B. CREATE VIEW, die nicht in der Entwurfsansicht eingegeben werden können, diese müssen direkt im SQL-Fenster eingegeben werden. Man kann sogar über Abfragen alle möglichen SQL-Befehle eingeben z.B. CREATE TABLE.
- SQL Datentypen und ihr MS Access Äquivalent\\
| Ansi: | Access: | Access Synonym: |
| BIT, BIT VARYING | BINARY | VARBINARY |
| BIT | BOOLEAN, LOGICAL, LOGICAL1, YESNO | |
| BYTE | INTEGER1 | |
| COUNTER | AUTOINCREMENT | |
| CURRENCY | MONEY | |
| DATE, TIME, TIMESTAMP | DATETIME | DATE, TIME, TIMESTAMP |
| GUID | ||
| DECIMAL | ||
| REAL | SINGLE | FLOAT4, IEEESINGLE, REAL |
| DOUBLE PRECISION, FLOAT | DOUBLE | FLOAT, FLOAT8, IEEEDOUBLE, NUMBER, NUMERIC |
| SMALLINT | SHORT | INTEGER2, SMALLINT |
| INTEGER | LONG | INT, INTEGER, INTEGER4 |
| INTERVAL | ||
| LONGBINARY | GENERAL, OLEOBJECT | |
| LONGTEXT | LONGCHAR, MEMO, NOTE | |
| CHARACTER, CHARACTER VARYING | TEXT | ALPHANUMERIC, CHAR, CHARACTER, STRING, VARCHAR |
| VALUE |
Spalten verschieben[edit]
Spalte markieren und mit gedrückter Maus per Drag & Drop verschieben.
Spalten verschieben[edit]
Spalte markieren und mit gedrückter Maus per Drag & Drop verschieben.
SQL-Ansicht[edit]
Umschalten über Menu 'Ansicht->SQL' oder rechte Maus im oberen Abfragefenster der Entwurfsansicht oder rechte Maus auf Caption. Umschalten auf Design-Ansicht über rechte Maus auf Caption.
Sortierung ändern[edit]
in der Entwurfsansicht im unteren Abfragebereich die Sortierung eingeben. Bei Abfragen, die auf mehreren Spalten basieren kann dadurch eine mehrstufige Sortierung realisiert werden. Die Sortierung unterscheidet nicht zwischen Gross- und Kleinschreibung.
Auswahlkriterien definieren[edit]
Kriterien werden im Kriterienfeld im unteren Fenster der Entwurfsansicht eingetragen. Siehe auch [[1] page 235ff.
- Parameter als Auswahlkriterien\\
Man kann Parameter einer Abfrage vom Anwender erfragen. Dazu muß der Abfragetext in [[<AbfrageText>]-Klammern stehen. Man kann diese Parameter auch typisieren, in dem man über das Menu Abfrage->Parameter den <AbfrageText> links als Parameter einträgt und rechts den Typ wählt. Dann steht in der SQL-Ansicht eine Parameterdefinition mit folgender Syntax:
PARAMETERS [[<freier Text>] <Typ>;
Der freie Text darf nicht der Name eines Feldes sein. In der Abfrage muss der freie Text genauso plus der eckigen Klammern verwendet werden, d.h. die Definition dient nur zur Typisierung.
Tabellen hinzufügen[edit]
Menu 'Abfrage->Tabellen anzeigen' + auswählen und 'Hinzufügen'.
- Beispiele
- Parametrierte Abfrage
SELECT VNM12203.BELEGNUMMER FROM VNM12203 WHERE (((VNM12203.KUNDENKONTOOID)=[[Für welche OID?]));
- Alle Einträge aus Tabelle A ohne Eintrag in Tabelle B
Voraussetzung: B ? ? 1 A
Verknüpfungseigenschaft: alle aus A und nur die aus B mit gleichem Inhalt bei den verknüpften Feldern und Kriterium 'Ist Null' bei B. (Begriffe ohne Literaturverweise).
Spalten im Abfrageresultat ausblenden[edit]
Check-Box im unteren Fenster der Entwurfsansicht deselektieren.
Ändern von Spaltenüberschriften[edit]
Vor den Feldnamen im unteren Fenster der Entwursansicht <String>:<Feldname> oder aber in den Feldattributen den Eintrag 'Beschriftung' ausfüllen, der dann Vorrang hat.
Formulare[edit]
Formulare dienen nicht nur der Darstellung von Daten aus Tabellen und Abfragen, sondern auch als ungebundene Formulare ohne direkte Verbindung zu einer Tabelle als Dialogfeld oder Bedienungselement.
Die einfachste Art der Erstellung ist der Formular-Assistent. Man ist dabei allerdings an die vorgegebenen Layouts gebunden.
Jedes Formular kann die Daten der zugrundeliegenden Tabelle in drei verschiedenen Darstellungen zeigen: Einzelnes Formular, Endlosformular und Datenblattansicht.
In der Entwurfsansicht kann über 'Ansicht->Feldliste' eine Liste der Felder eingeblendet werden, deren Elemente per Drag&Drop auf dem Formular plaziert werden können. Will man dabei nicht Edits nehmen, sondern ein anderes Control muss man den Controltyp zuvor in der Toolbox wählen. Links steht das Bezeichnungsfeld und rechts das eigentliche Feld. Das ganze heisst dann Steuerelement.
Das Eigenschaftsfenster kann permanent geöffnet sein und bezieht sich immer auf das aktuelle Element.
Bearbeiten[edit]
Eigenschaftsfenster des Formulars[edit]
Klick in die linke obere Ecke im Schnittpunkt der beiden Lineale.
Verschieben von Steuerelement[edit]
markieren und bei Cursor gleich schwarzer Hand verschieben, wenn in die linke obere Ecke eines der beiden Elemente gefahren wird wird nur dieses eine verschoben.
Steuerelemente deaktivieren[edit]
Im Eigenschaftsfenster auf Tab 'Daten' Feld 'Aktiviert' setzen. Ein weiteren Einfluß hat 'Gesperrt'.
Raster einstellen[edit]
die Rastereinheiten der Formulareigenschaften gibt die Anzahl der Rasterpunkt innerhalb des festen Gitters wieder, d.h. je weniger desto gröber das Raster
Dateninhalt eines Steuerelements[edit]
Eigenschaftsfenster->Daten->Steuerelementinhalt
Berichte[edit]
Eigenschaften eines Berichts ändern[edit]
- Entwurfsansicht
- rechte Maus in unteren leeren Bereich
Beispiele[edit]
CineCity.MDB[edit]
- tblKinos speichert Einzelheiten über Kinosäale
- tblFilme speichert Einzelheiten über Filme und die Kino-Nummer
- tblWochen speichert Informationen über die Kalenderwochen und die laufende Woche für einen Film, d.h. es sind nicht für jede Kalenderwoche ein Eintrag sondern mehrere Einträge pro Kalenderwoche für jeweils ein Film
- tblTermine speichert die Informationen über die Termine
Literatur[edit]
- Microsoft Access 97: Das Handbuch
- SQL: SQL.DOC
- SQL für Dummies