[Eine Seite zurück] [Übersicht] [Eine Seite vor]

Benutzung auf eigene Gefahr !
Keine Garantie für garnichts !

Spalte mit Numerierung an Tabelle anfügen

Sprache / Programm: Access ab Version 95
Beschreibung

Fügt an eine Tabelle eine neue Spalte mit fortlaufender Numerierung vom Typ Long der Datensätze an. Die Funktion kann auch auf fremde Datenbanken angewendet werden.

Die Programme zeigen, dass man auch mit SQL schnell zu Lösungen kommen kann.

VBA-Quelltext
Public Sub NumerierungsSpalteAnfügen(NameTabelle As String, NameSpalte As String, Optional Start As Long = 0)
    Dim Tabelle As DAO.Recordset, Spalte As Field, Zeile As Long
    On Error GoTo FehlerBeiNumerierungsSpalte
   
    DoCmd.RunSQL "ALTER TABLE [" & NameTabelle & "] ADD COLUMN [" & NameSpalte & "] LONG;"
   
    Set Tabelle = CurrentDb.OpenRecordset(NameTabelle, dbOpenDynaset)
    Set Spalte = Tabelle.Fields(NameSpalte)
    Tabelle.MoveFirst
    For Zeile = Start To DCount("*", NameTabelle) + Start - 1
        Tabelle.Edit
        Spalte = Zeile
        Tabelle.Update
        Tabelle.MoveNext
    Next Zeile
    Tabelle.Close
Exit Sub

FehlerBeiNumerierungsSpalte:
    MsgBox Err.Description
    End
End Sub

''' Lösung mit SQL
Public Sub NumerierungsSpalteAnfügen(NameTabelle As String, NameSpalte As String, Optional Start As Long = 0, Optional DatenBank As String = "")
    Dim DB As DAO.Database
    If DatenBank = "" Then Set DB = CurrentDb Else Set DB = OpenDatabase(DatenBank)
   
    DB.Execute "ALTER TABLE [" & NameTabelle & "] ADD COLUMN [" & NameSpalte & "] AUTOINCREMENT;"
    DB.Execute "ALTER TABLE [" & NameTabelle & "] ALTER COLUMN [" & NameSpalte & "] LONG"
    If Start <> 1 Then
        Start = Start - 1
        DB.Execute "UPDATE [" & NameTabelle & "] Set [" & NameSpalte & "]=[" & NameSpalte & "]" & IIf(Start > 0, "+", "") & Start
    End If
End Sub
Argumente der Funktion/Prozedur

NameTabelle

Name der zu ändernen Tabelle.

NameSpalte

Name der anzufügenden Spalte. Darf noch nicht in der Datenbank existieren

Start

Wert ab dem die Nummerierung beginnen soll

Datenbank

Vollständiger Pfad und Dateiname der externen Datenbank. (nur in einer Programmversion implementiert)
Anwendungsgebiete, Fehler und Warnungen

Die Reihenfolge wird durch Indizes, Beziehungen und Primärschlüssel beeinflußt. Wenn die Tabelle in der Reihenfolge numeriert werden soll, in der sie eingegeben wurde, müssen alle Indizes, Schlüssel und Beziehungen und Sortierreihenfolgen entfernt werden. Die Existenz der Datenbank oder Tabelle wird nicht geprüft. Es wird auch nicht geprüft, ob der Spaltenname bereits vergeben ist oder ob die Tabelle noch zusätzliche Spalten erlaubt (max. 256 Spalten). Verwendet die DAO Objektbibliothek. Ab Access 2000 muss diese explizit im VBA-Editor über 'Extras' -> 'Verweise' als 'Microsoft DAO 3.6' (oder höher) eingebunden werden und vor die 'Microsoft ADO 2.1' (oder höher) Bibliothek gesetzt werden.