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 |
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).
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").
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.
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".
Einzelansicht
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.
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 ).
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.
Hier der 4. Dialog. Es wird ein Spezifikationsname vergeben und mit OK ( 6 ) bestätigt. Anschliessend geht es weiter im 3. Dialog (s. oben):
Einzelansicht
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
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:
- Man blendet die Systemtabellen im Datenbankfenster über "Extras/Optionen" und dem Häkchen bei "Systemobjekte" auf dem Register "Ansicht" ein
- Nun öffnet man die Tabelle "MSysObjects" im Entwurf
- Dort kopiert man das Feld "Owner"
- Anschliessend wechselt man in den Entwurf der anzupassenden Tabelle und fügt das zuvor kopierte Feld ein
- Natürlich kann das neue Feld (Feldname, Feldgrösse, Indexeigenschaften) angepasst werden
- 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.
Seiten: 1