Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 4/2005.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

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)

Temporäre Tabellen

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.

Sinn und Alternativen

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 anlegen per SQL

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

    Abb. 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 Abb. 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 Abb. 2 aus.

    Abb. 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 Abb. 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 (s. Abb. 3).

    Abb. 3: Zusammengesetzte Indizes von Tabellen

    SQL-Datentyp

    Datentyp im Tabellenentwurf

    TEXT

    Text

    LONGTEXT

    Memo

    BYTE

    Zahl (Byte)

    SMALLINT

    Zahl (Integer)

    INTEGER

    Zahl (Long Integer)

    REAL

    Zahl (Single)

    FLOAT

    Zahl (Double)

    UNIQUEIDENTIFIER

    Zahl (Replikations-ID)

    DATETIME
    (Siehe DOUBLE)

    Datum

    MONEY

    Währung

    COUNTER

    Autowert (Long Integer)

    BIT

    Ja/Nein

    IMAGE

    OLE-Objekt

    Tab. 1: Felddatentypen unter Access-SQL und im Tabellenentwurf

    Tabellen löschen per SQL

    Die Syntax für das Löschen einer Tabelle per SQL-Anweisung ist wesentlich einfacher und erfordert keine weiteren Erklärungen:

    DROP Tabellenname

    Temporäre Tabellen anlegen und löschen in der Praxis

    Im Praxiseinsatz haben Sie mehrere Möglichkeiten, eine temporäre Tabelle zu erstellen: Entweder Sie speichern die CREATE TABLE-Abfrage und rufen diese auf oder Sie verwenden den gewünschten SQL-Ausdruck direkt beim Aufruf.

    Tabelle anlegen per gespeicherter Abfrage

    CREATE TABLE-Abfragen können Sie nicht in der Entwurfsansicht für Abfragen zusammenklicken - das gilt im Übrigen für alle Anweisungen der so genannten Data Definition Language (DDL), zu der neben CREATE TABLE und DROP TABLE außerdem noch Anweisungen wie ALTER TABLE, CREATE INDEX, CREATE USER und weitere gehören.

    Sie müssen eine solche Anweisung in der SQL-Ansicht der Abfrage eingeben. Erzeugen Sie dazu zunächst eine neue Abfrage und schließen Sie den Dialog Tabelle anzeigen, ohne eine Tabelle ausgewählt zu haben. In der Symbolleiste erscheint automatisch eine Schaltfläche zum Anzeigen der SQL-Ansicht (s. Abb. 4).

    Abb. 4: Anzeigen der SQL-Ansicht

    Per Klick auf diese Schaltfläche öffnen Sie die SQL-Ansicht einer Abfrage. Hier geben Sie den SQL-Ausdruck ein (s. Abb. 5). Sie können die Abfrage dann wie eine ganz normale Abfrage speichern (etwa unter dem Namen qryCreateTable_tblPersonen) und wie eine Aktionsabfrage ausführen, indem Sie auf die Schaltfläche Ausführen in der Symbolleiste klicken.

    Abb. 5: Eine gespeicherte DDL-Abfrage in der SQL-Ansicht

    Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

    Sind Sie Abonnent?Jetzt einloggen ...
     

    Kompletten Artikel lesen?

    Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

    E-Mail:

    Verwandte Beiträge:

    Indizierung mit Access

    Professionelle Datenmodellierung mit Access

    © 2003-2015 André Minhorst Alle Rechte vorbehalten.