Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Holger69 am August 18, 2022, 12:48:42

Titel: Spalte in Tabelle neu durchnummerieren
Beitrag von: Holger69 am August 18, 2022, 12:48:42
Hallo Zusammen,

ich bin immer wieder hoch erfreut, wie gut und schnell einem hier geholfen wird. Und ich glaube, mein nächstes Problem ist gar nicht so schwer zu lösen, aber ich kenne die VBA Prozedur dafür nicht.

Ausgangszustand
Eine Tabelle enthält im Feld ,,Index" teilweise gleiche Werte

ID   Feld1      Index
12   Blabla12   0
34   Blabla34   1   
4   Blabla4      2
7   Blabla7      1
8   Blabla8      3
17   Blabla17   2

Zielzustand
 
Diese Werte sollen aufgelöst und in eine Reihenfolge gebracht werden. Dabei gibt es keinerlei Sortierungsvorgaben (z.B. ein ORDER BY ID) zu beachten. Es müssen lediglich die alten Zahlen gelöscht und in Neue umgewandelt werden, die dann aber nur einmal vorhanden sind und in einer Reihenfolge stehen.

ID   Feld1      Index
12   Blabla12   0
34   Blabla34   1   
4   Blabla4      2   
7   Blabla7      3
8   Blabla8      4
17   Blabla17   5

Weiß jemand, wie das geht?

Vielen Dank im Voraus!
Holger
Titel: Re: Spalte in Tabelle neu durchnummerieren
Beitrag von: ebs17 am August 18, 2022, 12:56:50
Im einfachen Fall gönnst Du Deiner Tabelle ein zusätzliches Autwert-Feld. Damit hast Du sofort die Nummerierung in Folge. Mit dem Index-Feld kannst Du machen, was Du willst, von weglassen bis parallel laufen lassen.
Titel: Re: Spalte in Tabelle neu durchnummerieren
Beitrag von: Holger69 am August 18, 2022, 14:10:21
Vielen Dank für die Anregung, Eberhard 

AutoWert funktioniert ja bei leeren Tabellen bzw. wenn ein Datensatz nach dem anderen dazu kommt. Die Tabelle ist aber schon existent. Du meinst also, die bereits vorhandene Tabelle müsste dazu in eine neue kopiert werden, bei der das Feld Index ein AutoWert-Feld ist?

Ich suche ehrlich gesagt nach einer VBA-Prozedur mit einer entsprechenden UPDATE-SET-Anweisung für das Feld Index, welche die vorhandenen Werte einfach fix durch eine Reihenfolge ersetzt. Gibt es sowas?
Titel: Re: Spalte in Tabelle neu durchnummerieren
Beitrag von: ebs17 am August 18, 2022, 14:49:32
ZitatDu meinst also ...
Ein Feld kann auch nachträglich ergänzt werden, per Hand oder auch per Code.
Ist und bleibt das Einfachste. Zum Beispiel DDL:
ALTER TABLE
   mytable ADD COLUMN
      myfield COUNTER(1, 1)

ZitatUPDATE-SET-Anweisung
... über die ganze Spalte ist dramatisch schwierig bis unmöglich. Denkbar wäre eine Schleife per VBA, wo alle Inhalte durchgerattert werden, so Stück für Stück.

Zitatehrlich gesagt
Ehrlichkeit finde ich gut, besser als Lügen oder Phantasieren.
Titel: Re: Spalte in Tabelle neu durchnummerieren
Beitrag von: Holger69 am August 18, 2022, 15:32:38
Die Sache mit AutoWert-Feld ist für mich irgendwie nicht so prickelnd.
Nun, ich denke aber, ich habe die passende Lösung für mich gefunden.
Eine Update-Schleife mit Hilfe eines Recordsets liefert genau das Ergebnis, welches ich haben möchte.
Trotzdem vielen Dank Eberhard für's Mitdenken

Public Function IndexNumber()
  Dim sql As String
  Dim rs As DAO.Recordset
  Dim i As Integer
    i = 0
    sql = "SELECT Index FROM tblXYZ;"
    Set rs = CurrentDb.OpenRecordset(sql)
    Do Until rs.EOF
        rs.Edit
        rs.Fields("Index") = i
        i = i + 1
        rs.Update
        rs.MoveNext
    Loop
End Function