Programmiertips
Vorherige Seite
Zurück zur Übersicht
Nächste Seite


Visual Basic & Access (VBA): Tabellen, Felder und Indizes

In diesem Beispiel wird gezeigt, wie man per VB bzw. VBA - Code zwei Felder zu einer Tabelle hinzufügen kann.

Beispiel:

Der folgende Code fügt zu der Tabelle "MeineTabelle" ein Text- und ein Währungsfeld hinzu.


Sub AddFields ()

    Dim DB as Database

    Dim TDF as TableDef

    Dim FLD as Field



    Set DB = CurrentDB

    Set TDF = DB.TableDefs("MeineTabelle")

    If Not TDF.Updateable Then

        MsgBox "Dieser Tabellenentwurf kann nicht geändert werden."

        Exit Sub

    End If



    '

    ' 1. Textfeld, Länge 50 Zeichen

    '

    ' Prüfe zunächst, ob bereits ein Feld namens "MeinNeuesTextfeld" existiert:

    '

    If ElementExists("MeinNeuesTextFeld", TDF.Fields) Then

        DoCmd.Hourglass False

        MsgBox "Das Feld 'MeinNeuesTextFeld' existiert bereits und kann kein zweites Mal erstellt werden.", vbCritical, "Vorgang abgebrochen"

        GoTo End_Sub

    End If

    '

    ' Feld erstellen:

    '

    Set FLD = TDF.CreateField("MeinNeuesTextFeld", dbText, 50)

    FLD.Required = False ' Eingabe nicht erforderlich

    FLd.AllowZeroLength = True ' Leere Zeichenfolge zulässig

    '

    ' Feld zur Tabelle hinzufügen:

    '

    TDF.Fields.Append FLD



    '

    ' 2. Zahlenfeld, Währung.

    '

    ' Prüfe zunächst, ob bereits ein Feld namens "MeinNeuesGeldFeld" existiert:

    '

    If ElementExists("MeinNeuesGeldFeld", TDF.Fields) Then

        DoCmd.Hourglass False

        MsgBox "Das Feld 'MeinNeuesGeldFeld' existiert bereits und kann kein zweites Mal erstellt werden.", vbCritical, "Vorgang abgebrochen"

        GoTo End_Sub

    End If

    '

    ' Feld erstellen:

    '

    Set FLD = TDF.CreateField("MeinNeuesGeldFeld", dbCurrency)

    FLD.Required = False ' Eingabe nicht erforderlich

    FLD.DefaultValue = 0 ' Standardwert = 0

    '

    ' Feld zur Tabelle hinzufügen:

    '

    TDF.Fields.Append FLD



    '

    ' Objektvariablen wieder freigenben:

    '

    Set FLD = Nothing: Set TDF = Nothing: Set DB = Nothing

End Sub


Anmerkungen:
  1. Wenn der Tabellenentwurf nicht geändert werden kann, d.h. wenn die .Updatable - Eigenschaft gleich False ist, muß man einen anderen Weg einschlagen. Man erstellt dann eine neue, leere Tabelle mit den gleichen Feldern, fügt die neuen Felder hinzu, kopiert die Daten und löscht die Originaltabelle. Im Einzelnen sind folgende Schritte notwendig:
    1. Neue Tabellendefinition erstellen.
      1. Alle Tabelleneigenschaften kopieren.
      2. gleichnamige Felder erstellen.
        1. Feldeigenschaften kopieren.
      3. Indizes kopieren.
        1. Index kopieren.
          Dabei muß beachtet werden, daß Inhalte von Auto-Feldern nicht kopiert werden können.
        2. Indexfelder kopieren.
    2. Tabelleninhalte, also die eigentlichen Daten, kopieren.
    3. Die alte Tabelle durch die neue ersetzen:
      1. Alte Tabelle temporär umbenennen.
      2. Der neuen Tabelle den Namen der alten geben.
      3. Wenn alles ohne Fehler erledigt werden konnte: Alte Tabelle löschen.

  2. Bei dem hier vorgeschlagenen Weg kann es noch zwei Probleme geben:
    1. AutoWert-Felder haben nach dieser Aktion einen anderen Inhalt, da die Inhalte nicht kopiert werden können.
    2. Wenn die Tabelle Bestandteil einer oder mehrerer Beziehungen ist:
      1. Für die neue Tabelle müssen ebenfalls Beziehungen erstellt werden
      2. Die Beziehungen der alten Tabelle müssen gelöscht werden, bevor die Tabelle endgültig gelöscht werden kann.


Download

Vorherige Seite
Zurück zur Übersicht
Nächste Seite

© 1999 T. Prötzsch
Erstellt am 27. April 1999