Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

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

Anleitung Microsoft Microsoft Office

Mitglied: cim

cim (Level 1) - Jetzt verbinden

28.04.2008 um 09:32 Uhr, 18599 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
Datenbanken
gelöst Access 2010 UnterFormular filtern bzw. aktualisieren (2)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Datenbanken
Access Datenbank wie am einfachsten Datensätze aufbereiten (5)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Datenbanken
gelöst Access 2010 SQL Tabellen Datensätze einfügen (6)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Neue Wissensbeiträge
Batch & Shell

Batch zum Zurücksetzen eines lokalen Profils

Tipp von Mr.Error zum Thema Batch & Shell ...

RedHat, CentOS, Fedora

Fedora, RedHat, Centos: DNS-Search Domain setzen

(13)

Tipp von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
VPN Tunnel aufbauen (16)

Frage von Hajo2006 zum Thema LAN, WAN, Wireless ...

Router & Routing
ASUS RT-N18U mit VPN Client hinter Fritzbox - Portforwarding (14)

Frage von marshall75000 zum Thema Router & Routing ...

Microsoft Office
Saubere HTML aus Word-Dokument (14)

Frage von peterpa zum Thema Microsoft Office ...

E-Mail
gelöst Probleme beim E-Mail Empfang (12)

Frage von TommyB83 zum Thema E-Mail ...