Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

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

Anleitung Microsoft Microsoft Office

Mitglied: cim

cim (Level 1) - Jetzt verbinden

28.04.2008 um 09:32 Uhr, 18806 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
Windows 10

Heise Newsticker: Microsoft veröffentlicht das "Fall Creators Update

(8)

Information von Penny.Cilin zum Thema Windows 10 ...

LAN, WAN, Wireless

Schwachstelle im WPA2 Protokoll veröffentlicht

(3)

Information von colinardo zum Thema LAN, WAN, Wireless ...

Heiß diskutierte Inhalte
Windows Server
gelöst Gruppenrichtlinie greift nicht zu! (23)

Frage von Syosse zum Thema Windows Server ...

Hosting & Housing
Mailserver Software Empfehlungen (16)

Frage von sunics zum Thema Hosting & Housing ...

Windows 7
gelöst Windows 7 Anmeldedomäne festlegen (13)

Frage von flotaut zum Thema Windows 7 ...