Zum Inhalt dieser Seite

Access-Grundlagen #1 - Tabellen

1.1 Zusammengesetzten Index anlegen 1.2 Export mit Anlegen einer Spezifikation
1.3 Pfad feststellen 1.4 GROSS- und klein-Schreibung

Nach oben 1.1 Zusammengesetzten Index anlegen

Wie muss man vorgehen, wenn man einen über mehrere Felder zusammengesetzten Index anlegen will?

1. Zunächst muss man die Tabelle in der Entwurfsansicht öffnen. Dort geht man dann auf Ansicht/Indizes ( ALT + A , anschliessend N ) bzw. klickt gleich auf das gelbe "Blitzsymbol". Anschliessend öffnet sich folgendes Fenster (in dem Beispiel ist bereits ein Index über das Autowert-Feld "KundenID" angelegt).

Entwurfsansicht Indizes #1

2. Jetzt geht man in eine leere Zeile und dort in die Spalte "Indexname". In dieser Spalte vergibt man zunächst den Indexnamen (hier: "NameVorname").

Index benennen

3. Wenn man jetzt in die nächste Spalte "Feldname" springt, kann man dort das 1. Feld des zusammengesetzten Index auswählen (hier "KundenName"). Ausserdem kann man weiter unten die Indexeigenschaften (s. im Screenshot den grossen gelben Kasten: "Primärschlüssel", "Eindeutig" und "Nullwerte ignorieren") einstellen - diese Einstellungen findet man nur in der jeweils 1. Zeile eines Index! In diesem Beispiel wird ein eindeutiger Index (s. rote Markierung) erstellt.

Weitere Einstellungen vornehmen

4. Anschliessend wandert man noch eine Zeile weiter nach unten und trägt das nächste Feld des Index ein. Der zusammengesetzte Index kann bis zu 10 Felder beinhalten. Im nächsten Screenshot ist der zusammengesetzte Index durch den gelben Kasten gekennzeichnet. Er erstreckt sich hier über 2 Felder ("KundenName" und "KundenVorname"). Darunter sieht man den nächsten Index namens "DatErfassung".

Zusätzliches Feld an den Index hängen

Einzelansicht

Nach oben 1.2 Export mit Anlegen einer Spezifikation

Hier wird erklärt, wie man eine Tabelle exportiert und die vorgenommenen Einstellungen in einer Spezifikation speichert, die man zukünftig beim manuellen oder automatisierten Export per VBA nutzen kann. In der Spezifikation werden alle Optionen (Datumsformat, Feldbegrenzungszeichen etc.) gespeichert, so dass man beim nächsten Export weniger Handgriffe erledigen muss.

Wenn nicht alle Felder oder eine bestimmte Sortierung der Datensätze erforderlich ist, muss statt einer Tabelle eine Abfrage exportiert werden. Die Vorgehensweise ist aber identisch.

Bei sich häufiger wiederholenden Importaktionen von Textdateien lohnt sich der Einsatz von Spezifikationen ebenso, wird hier aber nicht näher erläutert, da die Schritte sehr ähnlich sind.

Als erstes markiert man die Tabelle im Datenbankfenster. Nach Rechtsklick geht man auf "Exportieren...". Man kann die Tabelle natürlich auch markieren und wählt dann im Datei-Menü ( ALT + D ) "Exportieren..." ( P ). Daraufhin öffnet sich folgender Dialog, in dem man unter 1 das Export-Verzeichnis und bei 2 den Dateityp auswählt. Anschliessend wird die Auswahl mittels der "Speichern"-Schaltfläche ( 3 ) bestätigt.

Erster Dialog beim Export

Nun gelangt man zum 2. Dialog, in dem man die erste Einstellung vornehmen kann (ausgewählt ist hier "Mit Trennzeichen ..."). Um das Speichern der Spezifikation zu ermöglichen, muss jetzt die links unten befindliche Schaltfläche "Weitere..." angeklickt werden (s. 4 ).

Start des Textexport-Assistenten

Im 3. Dialog nimmt man alle gewünschten Einstellungen vor. Wenn man endlich zufrieden ist, kann man nun über "Speichern unter..." ( 5 ) einen Namen für die Spezifikation angeben und bestätigt dort mit OK (s. weiter unten 6 im 4. Screenshot). Nachdem die Spezifikation gespeichert wurde, schliesst man auch diesen 3. Dialog über OK ( 7 ), gelangt zum 2. Dialog (s. oben) und geht mit "Weiter >" ( 8 ) bis zu dem Punkt, an dem der Dateiname der zu erstellenden Textdatei angegeben werden muss. Schon ist man fertig!

Einsatz der Spezifikation beim manuellen Export: Gleiche Vorgehensweise bis zu Punkt 5 . Dort klickt man statt "Speichern unter..." die darunterliegende Schaltläche "Spezifikationen..." an, um aus einer Liste die gewünschte Exportspezifikation zu verwenden.

Einsatz der Spezifikation in VBA : Wenn die Spezifikation wie beschrieben gespeichert wurde, kann diese folgendermassen verwendet werden

DoCmd.TransferText acExportDelim, "SpezKundenExport", "tblKunden", "C:\Kunden.txt", True

Damit wird die Tabelle "tblKunden" mit den Einstellungen innerhalb der Spezifikation "SpezKundenExport" in die Datei "Kunden.txt" (im Verzeichnis "C:\") exportiert. Durch den letzten Parameter "True" werden die Feldnamen in der 1. Zeile der Textdatei aufgeführt.

Genaue Definition der Spezifikation

Hier der 4. Dialog. Es wird ein Spezifikationsname vergeben und mit OK ( 6 ) bestätigt. Anschliessend geht es weiter im 3. Dialog (s. oben):

Meldedialog beim Speichern der Spezifikation

Einzelansicht

Nach oben 1.3 Pfad feststellen

Um den Pfad zu einer Tabelle festzustellen, bietet sich eine Funktion, die man in einem globalen Modul ablegt, an. Das Modul muss beim Speichern anders als die Funktion benannt werden (s. auch Anleitung auf DBWiki ). Der Code benötigt einen Verweis auf DAO - s. dazu FAQ 7.11 :

Public Function fctTabPath(strTab As String, _
                           Optional strType As String = "Komplett") _
                          As String
 
On Error GoTo fctTabPath_Err
 
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Dim strCon As String
 
strSQL = "SELECT [Name], Type, Database " & _
         "FROM MSysObjects " & _
         "WHERE [Name] Not Like 'Msys*' AND (Type=1 Or Type=6) AND " & _
         "[Name]='" & strTab & "';"
 
Set db = CurrentDb
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
 
With rs
 If .EOF Then
   strCon = "#ungültiger Tabellenname#"
  Else
   strCon = Nz(!Database, db.Name)
   If strType <> "Komplett" Then
     strCon = Left(strCon, Len(strCon) - Len(Dir(strCon)))
   End If
 End If
End With
 
fctTabPath_Exit:
    rs.Close
    Set rs = Nothing
    Set db = Nothing
    fctTabPath = strCon
    Exit Function
 
fctTabPath_Err:
    strCon = "#Fehler - " & Err.Number & "#"
    Resume fctTabPath_Exit
 
End Function
 

Der Name der Datenbank, aus der die Tabelle stammt, ist dann global mit folgender Anweisung ermittelbar. Wenn wirklich nur der Pfad festzustellen ist, kann man einen beliebigen 2. Parameter (außer "Komplett") verwenden. Hier 2 Beispiele für Steuerelementinhalte:

=fctTabPath("NameDerTabelle")
 
=fctTabPath("NameDerTabelle";"a")
 
Einzelansicht

Nach oben 1.4 GROSS- und klein-Schreibung

Leider kann man in einem einfachen Textfeld nicht zwischen Groß- und Klein-Buchstaben unterscheiden. Allerdings kann man dieses Problem durch den Einsatz eines Binärfeldes umgehen. Da dieser Felddatentyp aber im Tabellenentwurf nicht zur Auswahl steht, muss man einen der folgenden Wege einschlagen:

  1. Man blendet die Systemtabellen im Datenbankfenster über "Extras/Optionen" und dem Häkchen bei "Systemobjekte" auf dem Register "Ansicht" ein
  2. Nun öffnet man die Tabelle "MSysObjects" im Entwurf
  3. Dort kopiert man das Feld "Owner"
  4. Anschliessend wechselt man in den Entwurf der anzupassenden Tabelle und fügt das zuvor kopierte Feld ein
  5. Natürlich kann das neue Feld (Feldname, Feldgrösse, Indexeigenschaften) angepasst werden
  6. Entwurf der anzupassenden Tabelle speichern

Sofern man sich mit SQL auskennt, ist die o.g. Möglichkeit sicherlich ein wenig umständlich. Einfacher geht es, wenn man in der SQL-Ansicht diesen beispielhaften Code verwendet:

ALTER TABLE [NameDerTabelle] ADD COLUMN [NameDesNeuenFeldes] BINARY
 

Das Binärfeld ist in der Lage, zwischen "Aa" und "aA" (und "ß" und "ss") zu unterscheiden. Dies kann bei eindeutigen Indizes wichtig sein, wenn unterschiedliche Schreibweisen wirklich eine Bedeutung haben. Nachteil von Binärfeldern ist das Sortierverhalten: "Ä" kommt nicht zwischen "A" und "B", sondern erst danach zum Vorschein. Durch eine berechnete Spalte mit dem Inhalt Sortierfeld: Format([NameDesBinärfeldes]) und Verwendung des Format-Ausdrucks zur Sortierung kann dieses Verhalten zumindest in Abfragen umgangen werden.

Einzelansicht