Hallo Leute,
in meiner Datenbank ist leider etwas schief gelaufen.
Ich habe nun den „Nachnamen1“, „Vorname2“,"Nachname2
alles in einer Spalte und möchte mit einem Makro die einzelnen Teile herauskopieren.
Ich habe dafür die folgende Schleife geschrieben.
Public Sub Datenmanipulation()
Dim db As Database
Set db = DBEngine.Workspaces(0).Databases(0)
Dim recLesen, recSchreiben, recnummer As Recordset
Dim intPos As Variant
Dim nummer As Double
'altDepotnummer = 0
Set recLesen = db.OpenRecordset(„Select * From Tabelle1“)
Set recSchreiben = db.OpenRecordset(„Select * From Tabelle1“)
Do Until recLesen.EOF
If Not IsNull(recLesen![Nachname1]) Then
recLesen.Edit
intPos = InStr(1, recLesen![Nachname1], " ")
If intPos > 0 Then
If Len(recLesen![Nachname1]) > „“ Then
recSchreiben![Vorname1] = Trim(Mid(recLesen![Nachname1], (intPos - 1), 4))
Else
recSchreiben![Nachname2] = „“
End If
End If
recLesen.Update
recLesen.MoveNext
End If
Loop
End Sub
Leider funktioniert das nicht ganz.
kann jemand helfen ?
Ich habe nun den „Nachnamen1“, „Vorname2“,"Nachname2
alles in einer Spalte und möchte mit einem Makro die einzelnen
Teile herauskopieren.
Makro? du meinst eine VBA-Funktion?
Ich habe dafür die folgende Schleife geschrieben.
Public Sub Datenmanipulation()
Dim db As Database
Set db = DBEngine.Workspaces(0).Databases(0)
Dim recLesen, recSchreiben, recnummer As Recordset
Dim intPos As Variant
Dim nummer As Double
'altDepotnummer = 0
Set recLesen = db.OpenRecordset(„Select * From Tabelle1“)
Set recSchreiben = db.OpenRecordset(„Select * From
Tabelle1“)
warum öffnest du zwei Recordsets? Du liest und schreibst doch in ein und der selben Tabelle!
Do Until recLesen.EOF
If Not IsNull(recLesen![Nachname1]) Then
recLesen.Edit
hier schaltest du das Bearbeiten beim LESEN ein!? warum?
intPos = InStr(1, recLesen![Nachname1], " ")
If intPos > 0 Then
If Len(recLesen![Nachname1]) > „“ Then
LEN liefert einen Zahlenwert und kann nicht mit einem String verglichen werden!!
richtig wäre: If Len(recLesen![Nachname1]) > 0 Then
recSchreiben![Vorname1] =
Trim(Mid(recLesen![Nachname1], (intPos - 1), 4))
Else
recSchreiben![Nachname2] = „“
End If
End If
recLesen.Update
du startest das Editieren im Recordset LESEN und führst auch dort das Update durch. SCHREIBEN erledigst du aber im Recordset recSchreiben. Das kann nicht funktionieren!
recLesen.MoveNext
End If
Loop
End Sub
Leider funktioniert das nicht ganz.
logisch, siehe oben
kann jemand helfen ?
ich würde einfach eine Abfrage über die Tabelle laufen lassen.