Benutzung auf eigene Gefahr ! |
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 |
|
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. |