Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

Access Datensätze im Unterformular kopieren

Mitglied: cim

cim (Level 1) - Jetzt verbinden

28.04.2008 um 09:32 Uhr, 18965 Aufrufe

In Access müssen Datensätze des Hauptformulars und des Unterformulars kopiert werden.
Eine einfache Kopie reicht nicht aus, da die Unterdatensätze die ID des neuen Hauptdatesatzes erhalten müssen, damit beide miteinander verknüpft werden.

Die Lösung gibt's sicherlich tausendfach, hier ist nur ein Beispiel.

Erläuterung:
Objekte:
"Haupttabelle" mit Feld "ID"
"Untertabelle" mit Feld "HauptID"
Anfügeabfragen für Haupt- und Untertabelle, die nur die Datensätze anzeigen, die die ID des Quelle-Datensatzes haben!

Die Funktion "DSKopie" wird aus dem zu kopierenden Datensatz des Hauptformulars aufgerufen.

Der IF-Anschnitt kann beliebig oft für weitere Unterformulare kopiert werden.
Anstatt der FOR-Schleife kann natürlich auch DO oder WHILE eingetragen werden.
Anstatt der Abfragen können natürlich auch die SQL-Anweisungen ausgeführt werden. Bei großen Tabellen kann der Code dann aber "riesig" werden.

1) Um die Kopie aus beliebigen Datensätzen heraus auszuführen, wird die Variable "ActualForm" als Formularobjekt angelegt.
2) Speichere die ID in einem ausgeblendeten Formular, z.B. dem Startmenü für die spätere Verwendung in den Abfragen.
3) Kopiere den alten Quelle-Datensatz in der Haupttabelle mit einer Anfügeabfrage.
4) Öffne die Haupttabelle als Recordset. Hier mit Sortierung, damit auch wirklich der neueste Datensatz erreicht wird.
5) Merke die ID des neuen Ziel-Datensatzes
6) Hat der Quelle-Datensatz Einträge der Untertabelle?
7) Anfügeabfrage der Untertabelle, die nur Nummern wie unter 2) kopiert
8) Setze in den Ziel-Datensatz der Untertabelle die ID, die den Datensatz mit der Haupttabelle verknüpft.
9) Wurden mehr als ein Datensatz kopiert? Dann muss der vorherige auch die Verknüpfungs-ID erhalten.

Function DSKopie()
Dim DB As Database, RST As Recordset
Dim LastID As Integer, ThisID As Integer
Dim ActualForm As Form

Set ActualForm = Screen.ActiveForm '1)
Forms!start!AblageID = Forms(ActualForm.Name)!ID '2)
DoCmd.OpenQuery "DSCopyHaupt" '3)

Set DB = CurrentDb
Set RST = DB.OpenRecordset("SELECT Haupttabelle.* FROM Haupttabelle ORDER BY Haupttabelle.id;") '4)
RST.MoveLast
LastID = RST!ID '5)

If DCount("id", "Untertabelle", "[HauptID] = " & Forms!start!AblageID) > 0 Then '6)
DoCmd.OpenQuery "DSCopyUnter" '7)
Set RST = DB.OpenRecordset("SELECT Untertabelle.* FROM Untertabelle ORDER BY Untertabelle.id;")
RST.MoveLast
RST.Edit
RST!HauptID.Value = LastID '8)
RST.Update
For x = 2 To DCount("id", "Unterabelle", "[HauptID] = " & Forms!start!AblageID) '9)
RST.MovePrevious
RST.Edit
RST!HauptID.Value = LastID
RST.Update
Next x
End If

Set RST = Nothing
Set DB = Nothing

End Function
Ähnliche Inhalte
Festplatten, SSD, Raid

Festplatten-Partionen kopieren-klonen-imagen

Anleitung von KuemmelFestplatten, SSD, Raid23 Kommentare

Hallo Forengemeinde! Da die Frage in letzter Zeit ja wieder immer öfter auftritt, wie man denn am besten eine ...

Windows 10

Assigned access unter Win10 (1511) buggy bis unters Dach

Erfahrungsbericht von DerWoWussteWindows 101 Kommentar

Zur Info: Was unter Win8 noch funktionierte, ist mal wieder "überarbeitet" worden, schönen Dank dafür, Microsoft. Will man einem ...

Windows 10

Windows 10: Alle Einträge aus dem Schnellzugriff (Quick access) im Explorer mit Powershell entfernen

Tipp von colinardoWindows 103 Kommentare

Wer es gebrauchen kann, ein Powershell-Einzeiler zum Entfernen aller Einträge aus dem Schnellzugriff (quick access) im Windows-Explorer. Und schon ...

Windows Netzwerk

Securing Privileged Access for the AD Admin - Part 1

Information von 133883Windows Netzwerk1 Kommentar

Sollte jeder AD Admin in seinem Repertoire haben. Separate Admin-Accounts für exakt definierte Aufgaben und Administrations-Bereiche. Folgende Artikelserie nimmt ...

Neue Wissensbeiträge
Windows 10

USB Maus und Tastatur versagen Dienst unter Windows 10

Erfahrungsbericht von hardykopff vor 2 TagenWindows 105 Kommentare

Da steht man ziemlich dumm da, wenn der PC sich wegen fehlender USB Tastatur und Maus nicht bedienen lässt. ...

Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 2 TagenAdministrator.de Feedback18 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 3 TagenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 3 TagenGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Heiß diskutierte Inhalte
Router & Routing
Router auf Orginal Firmware zurück flashen mit Tftpd
Frage von ILeonardRouter & Routing21 Kommentare

Hallo, Ich habe zwei Router, einmal TP-Link 841n v11 und TP-Link 940N v5. Ich wollte fragen, ob jemand mir ...

Router & Routing
WRT keine Verbindung zum Web Interface
gelöst Frage von ILeonardRouter & Routing18 Kommentare

Hallo, Ich habe einen TP-Link WR841n mit wrt geflasht, das Problem ist ich kann mich mit 192.168.1.1 nicht verbinden. ...

Windows Server
Standortvernetzung zu einem Strato VServer (Windows)
Frage von matzefratze81Windows Server10 Kommentare

Moin, ich komme aus einem Enterprise-Umfeld und habe den Fehler gemacht, dass ich mich auf ein kleines Unternehmen eingelassen ...

TK-Netze & Geräte
Telefonie zweier Fritzboxen mit je eigenem DSL Anschluss verbinden
Frage von hannsgmaulwurfTK-Netze & Geräte10 Kommentare

Hallo zusammen, ich habe hier einen Haushalt mit zwei Anschlüssen. Einmal ISDN, einmal DSL. An jedem Anschluss hängt eine ...