VBA Tipp: Datensatz kopieren

Aus DBWiki
Wechseln zu: Navigation, Suche

Aufgabenstellung

Ich möchte alle Werte des aktuellen Datensatzes in einen neuen Datensatz kopieren, um mir Tipparbeit zu sparen. Die kopierten Werte brauche ich dann nur noch abzuändern, und muss sie nicht komplett neu schreiben.

Lösung

Das geht mit der folgenden Sub-Prozedur, die in einem globalen Modul hinterlegt wird.

Public Sub DatensatzKopieren()
 
 'Quelle: www.dbwiki.net oder www.dbwiki.de
 
 Dim arr() As Variant
 Dim i As Integer
 Dim ctl As Control
 Dim frm As Access.Form
 
 Set frm = Screen.ActiveForm
 i = 1
 
 'alle Feldnamen auslesen,
 For Each ctl In frm.Controls
 
   'außer: Bezeichnungsfelder, Schaltflächen, Null - Werte
   If VarType(ctl) > 1 And VarType(ctl) < 9 Then
 
     ReDim Preserve arr(i)
 
     'Namen speichern
     arr(i - 1) = ctl.Name
     'Wert speichern
     arr(i) = ctl
 
     i = i + 2
 
   End If
 
 Next
 
 'Neuer Datensatz
 DoCmd.GoToRecord , , acNewRec
 
 On Error Resume Next
 
 'Werte in neuen Datensatz kopieren
 For i = 0 To UBound(arr)
   frm(arr(i)) = arr(i + 1)
   i = i + 1
 Next
 
 Set frm = Nothing
 
End Sub

Aufruf im Formular

Hinweis:
Es werden nur die Werte der im Formular vorhandenen Felder kopiert.

 Call DatensatzKopieren

Wiki-Links