Zusammenfassung
Sie lernen, warum und wie man temporäre Tabellen anlegt und wieder löscht und welche verschiedenen Möglichkeiten es dazu gibt.
Techniken
VBA, SQL, DDL, ADO, DAO
Voraussetzungen
Access 2000 oder höher
Beispieldateien
TemporaereTabellen.mdb (Access 2000)
André Minhorst, Duisburg
Temporäre Tabellen benötigt man beispielsweise, wenn man ein Kombinations- oder Listenfeld mit Informationen bestücken möchte, die nicht in einer Tabelle vorliegen und auch nicht dauerhaft in einer Tabelle gespeichert werden sollen. Im vorliegenden Beitrag erfahren Sie, wie Sie temporäre Tabellen anlegen und wieder löschen und welche unterschiedlichen Möglichkeiten es dazu gibt.
Für den Einsatz von temporären Tabellen gibt es mehrere Gründe, die alle eines gemeinsam haben: Sie enthalten Daten, die nur für kurze Zeit benötigt werden und die ansonsten das Datenbankfenster unnötig füllen würden. Einige Beispiele:
Die temporäre Tabelle als Manifestierung eines Abfrageergebnisses macht nur dann Sinn, wenn häufig auf die Werte zugegriffen wird und sich die Daten selten ändern – ansonsten verwendet man einfach das Abfrageergebnis statt der temporären Tabelle.
Die Anzeige von Daten in einem Formular ist von dem Vorhandensein eines Recordsets abhängig – dies kann ebenso wie eine Tabelle temporär erzeugt werden.
Um Daten in Kombinations- und Listenfeldern anzuzeigen, die nicht in Tabellenform vorliegen, kann man auch eine Wertliste verwenden – man setzt dazu einfach die Eigenschaft Herkunftstyp auf Wertliste und stellt eine Datensatzherkunft aus den durch Semikola getrennten Werten zusammen. Die Anzahl der in der Wertliste enthaltenen Zeichen ist allerdings begrenzt.
Tabellen legt man mit der SQL-Anweisung CREATE TABLE an. Diese ist prinzipiell so aufgebaut:
CREATE TABLE Tabellenname (Feldliste, Mehrfeldeinschränkungen)
Die Feldliste enthält die einzelnen Felder und deren Eigenschaften und unter Mehrfeldeinschränkungen versteht man beispielsweise Indizes, die mehrere Felder umfassen.
Ein Eintrag der Feldliste hat folgende Syntax:
Feldname Datentyp [(Größe)] [NOT NULL] [Einzelfeldeinschränkungen]
Feldname und Datentyp sind die Pflichtfelder zur Festlegung eines Feldes. Die möglichen Datentypen finden Sie in Tab. 1 – dort sind zusätzlich die Bezeichnungen der Datentypen in der Entwurfsansicht von Tabellen enthalten.
Die Größe geben Sie beispielsweise für den Datentyp TEXT an, um die Anzahl der maximal enthaltenen Zeichen zu deklarieren.
Ein Beispiel für eine einfache CREATE TABLE-Abfrage ist folgendes:
CREATE TABLE tblPerson(PersonID INTEGER, Vorname TEXT(50), Nachname TEXT(50))
Die Abfrage erzeugt die Tabelle aus Bild 1.
Bild 1: Eine einfache Tabelle
Der Ausdruck NOT NULL legt fest, ob das Feld Nullwerte enthalten darf. Unter Einzelfeldeinschränkung lassen sich Eigenschaften wie Primärindex, Eindeutigkeit und Zulassen von Nullwerten einstellen; außerdem können Sie hier Verknüpfungen mit anderen Tabellen festlegen.
Dies soll hier im Rahmen des Anlegens einfacher temporärer Tabellen jedoch nicht vertieft werden.
Die genannten Eigenschaften lassen sich für Einzelfeldeinschränkungen mit folgender Syntax festlegen:
CONSTRAINT Einschränkungsname {PRIMARY KEY | UNIQUE | NOT NULL}
Um das Feld PersonID der Tabelle aus Bild 1 als Primärschlüsselfeld auszuführen, erweitern Sie die CREATE TABLE-Anweisung wie folgt:
CREATE TABLE tblPerson(PersonID INTEGER CONSTRAINT Primaerschluessel PRIMARY KEY, Vorname TEXT(50), Nachname TEXT(50))
Fehlt noch, dass das Primärschlüsselfeld beim Anlegen eines neuen Datensatzes automatisch einen neuen Wert erhält, wie es der Datentyp Autowert ermöglicht.
Dazu ändern Sie einfach den Datentyp in der CREATE TABLE-Anweisung auf COUNTER um. Das Ergebnis sieht dann wie in Bild 2 aus.
Bild 2: Tabelle mit Primärschlüsselfeld des Datentyps Autowert
Für Mehrfeldeinschränkungen ist zusätzlich die Angabe der beteiligten Felder erforderlich:
CONSTRAINT Name {PRIMARY KEY (Feldliste) | UNIQUE (Feldliste) | NOT NULL (Feldliste)}
Ein Beispiel für eine solche Mehrfeldeinschränkung ist das Zusammenfassen der Felder Vorname und Nachname der Tabelle des vorherigen Beispiels zu einem eindeutigen Index:
CREATE TABLE tblPerson( PersonID COUNTER CONSTRAINT Primaerschluessel PRIMARY KEY, Vorname TEXT(50), Nachname TEXT(50), CONSTRAINT EindeutigerSchluessel UNIQUE(Vorname, Nachname))
Das Ergebnis sieht zunächst so aus wie in Bild 2. Indizes wie der soeben erstellte sind allerdings auch nur im Dialog Indizes der Entwurfsansicht einer Tabelle zu sehen.
Diesen Dialog zeigen Sie ganz einfach an, indem Sie die gewünschte Tabelle in der Entwurfsansicht öffnen und dann aus der Menüleiste den Eintrag Ansicht/Indizes auswählen (siehe Bild 3).
Bild 3: Zusammengesetzte Indizes von Tabellen
SQL-Datentyp |
Datentyp im Tabellenentwurf |
TEXT |
Text |
LONGTEXT |
Memo Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ... den kompletten Artikel im PDF-Format mit Beispieldatenbank diesen und alle anderen Artikel mit dem Jahresabo |