Schleife in VBA bauen

Hallo!

Folgendes Problem:
Ich habe eine Tabelle I mit ID und Name. Dann habe ich eine Tabelle II mit ganz vielen Spalten. Eine auch, in der der Name aus Tabelle I vorkommt.

Nun möchte ich gerne, dass über VBA eine neue Tabelle erstellt wird und in die neue erstellte Tabelle Daten aus der Tabelle II geschrieben werden. Dieser Vorgang soll x mal wieder holt werden. Soll heißen, für jeden Namen der in Tabelle I steht, soll eine neue Tabelle mit den Namen erstellt werden und eine Abfrage auf Tabelle II mit dem Kriterium des Namens gestartet werden.

Ich stell mal meinen bisherigen VBA Code mal rein. Dann wird es, glaube ich, verständlicher was ich möchte:

**Private Sub Tabelle_erstellen_Click()
Dim db As Database
Dim tblDef As TableDef
Dim fIdx As Index

Set db = CurrentDb
Set tblDef = db.CreateTableDef(„Peter“)

AppendDeleteField tblDef, „APPEND“, „SOC“, dbText, 255

db.TableDefs.Append tblDef

Dim sqlString As String
sqlString = „INSERT INTO [Peter]“ & _
"SELECT [Tabelle II].[SOC] & _
„FROM [Tabelle II]“ & _
„WHERE ((([Tabelle II].[Name])=‚Peter‘))“
CurrentDb.Execute (sqlString)
End Sub**

Soll also heißen, dass statt für Peter, der VBA-Code für jeden Wert aus der Tabelle I einmal durchlaufen werden soll. Peter, Hans, Jürgen etc.
Wie kann ich solch eine Schleife bei meinem VBA Code mit einfügen?

Danke, Kinglui

Hallo,

Wie kann ich solch eine Schleife bei meinem VBA Code mit
einfügen?

Definier ein Recordset
dann kannst du mit einer Schleife das Recordset immer auf den nächsten
Datensatz stellen und bis EOF laufen lassen.

Grüße,
Thomas

Definier ein Recordset
dann kannst du mit einer Schleife das Recordset immer auf den
nächsten
Datensatz stellen und bis EOF laufen lassen.

Und wie definiere ich solch einen Recordset? Wie würde das jetzt konkret bei meinem VBA-Code aussehen?
Ich habe nämlich nicht so große Erfahrungen mit VBA.

Hallo,

Dim db As Database, rst As Recordset
Set db = CurrentDb
Set rst = db.OpenRecordset(„Name der Tabelle, die durchlaufen werden soll“, dbOpenDynaset)
rst.MoveFirst
Do Until rst.EOF = True

'Hier in der Schleife kanst Du auf die Felder des jeweils aktuellen Datensatzes über rst![Feldname] zugreifen und machen, was Du willst

rst.MoveNext
Loop

rst.Close
Set rst = Nothing
db.Close
Set db = Nothing

ujk