Temporäre Tabellen

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:

  • Zu importierende Daten sollen in einer temporären Tabelle zwischengespeichert werden, bevor diese in die Zieltabellen gelangen.
  • Es wird oft auf das Ergebnis einer Abfrage zugegriffen, deren Inhalt sich nur sporadisch ändert. In dem Fall speichert man das Abfrageergebnis in einer temporären Tabelle und greift auf diese zu, um Performance zu gewinnen. Die Tabelle wird bei änderungen in den der Abfrage zugrunde liegenden Daten aktualisiert.
  • Formulare, Kombinations- oder Listenfelder sollen Informationen anzeigen, die noch nicht in einer Tabelle erfasst sind und die auch nicht dauerhaft erfasst werden sollen. Beispiel: Sie möchten E-Mails aus Outlook einlesen und diese in Access zur Auswahl bereitstellen.
  • 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

    Schreibe einen Kommentar