Felder einer Tabelle automatisch befüllen Access

Hallo alle zusammen,

ich habe folgendes Problem.
Ich habe eine Tabelle, bei der ich via VBA eine Spalte mit dem Namen „Periode“ hinzufüge. Diese Spalte soll anschließend komplett mit dem Namen der Tabelle befüllt werden.
Momentan verwende ich den foglenden Code:

’ Feld Periode in Tabelle 2 einfügen
Set db = CurrentDb()
Set td = db.TableDefs(„2“)
With td
.Fields.Append .CreateField(„Periode“, dbText, 20)
.Fields.Refresh
End With
Set td = Nothing
Set db = Nothing
’ Felddatentyp in Zahl umwandeln
CurrentDb().Execute „ALTER TABLE 2 Alter COLUMN Periode LONG“, dbFailOnError
’ Felder in Spalte füllen
Set rstPeriode = CurrentDb.OpenRecordset(„2“, dbOpenDynaset)
rstPeriode.Edit
rstPeriode!Periode = „2“
rstPeriode.Update

Problem dabei ist, dass nur ein Feld befüllt wird und nicht die ganze Spalte. Außerdem habe ich hier noch nicht den Tabellennamen als Inhalt genommen, sondern erstmal nur eine fixe Zahl. BTW der Tabellenname ist eine Zahl, deswegen habe ich den Felddatentyp auf Zahl umgestellt.

Ich hoffe jemand hat eine Lösung, ich weiß bei dem Problem nicht weiter.

LG Madlen

Hallo,

und welcher Sinn steckt hinter dem ganzen Aufwand?

Gruß
Franz, DF6GL

Hallo.

Naja wir haben mehrere von diesen Tabellen, die sehr sehr viele Zeilen haben und wir das nicht alles händisch machen wollen, weil es auch ständig aktualisiert wird. Im Allgemeinen die Spalte überhaupt nötig, um anschließend damit weiter zu rechnen.

LG Madlen

Hallo,

naja, das ist nun keine Erklärung zum Sinn und Zweck des Ganzen…

Ohne genauere Kenntnis darüber muss ich halt sagen, dass das Ganze ein Irrweg ist und keinen vernünftigen DB-technischen Hintergrund hat.

Gruß
Franz, DF6GL

Moin, Madlen,

Problem dabei ist, dass nur ein Feld befüllt wird

ohne Schleife geht da nichts:

Set rstPeriode = CurrentDb.OpenRecordset(„2“, dbOpenDynaset)

 If rstPeriode.RecordCount \> 0 Then
 rstPeriode.MoveFirst
 While Not rs.EOF

rstPeriode.Edit
rstPeriode!Periode = „2“
rstPeriode.Update

 rstPeriode.MoveNext
 Wend

Das wäre die Technik, um Werte einzubringen. Für eine Konstante würde man schlicht schreiben

 db.Execute "Update 

Set = ‚2‘"

Abgesehen davon schließe ich mich Franz’ Meinung an: Eine Spalte über alle Zeilen „automatisch“ zu befüllen ist fachlich unsinnig. Versuch lieber, das Datenmodell zu verbessern.

Gruß Ralf