{"id":55000607,"date":"2008-06-01T00:00:00","date_gmt":"2021-03-22T16:19:20","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=607"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Daten_aus_verknuepften_Tabellen_kopieren","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/","title":{"rendered":"Daten aus verkn&uuml;pften Tabellen kopieren"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg05.met.vgwort.de\/na\/a2d53eb2dde6434ca9911acd7fbff7e8\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Wer mal eine Rechnungsverwaltung entwickelt und vielleicht auch eingesetzt hat, kennt das: Ach, der Kunde hat doch schon mal bestellt &#8230; und sogar fast die gleichen Positionen! Da w&auml;re es doch praktisch, wenn man den alten Rechnungsdatensatz einfach kopieren k&ouml;nnte. Wie das funktioniert, zeigt Ihnen dieser Beitrag f&uuml;r die relevanten Beziehungsarten, also 1:n- und m:n-Beziehungen.<\/b><\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Beziehungsgeflechte<\/p>\n<p>Rechnungen beziehen ihre Daten meist aus Tabellen, die in 1:n- beziehungsweise m:n-Beziehungen zueinander stehen. Der einfachere Fall ist die 1:n-Beziehung: Hier gibt es auf der einen Seite lediglich den Rechnungsdatensatz und auf der anderen Seite eine Tabelle mit den Positionen, wobei man in diesem Fall davon ausgeht, dass die Positionen individuellen Charakter besitzen. <\/p>\n<p>Dies kommt beispielsweise vor, wenn man als Softwareentwickler Anwendungen oder sonstige Dienstleistungen abrechnet &#8211; einen Katalog wie bei einem Webshop gibt es hier nicht.<\/p>\n<p>Dies ist aber der Fall, wenn man tats&auml;chlich mit Produkten handelt: Dann gibt es eine Tabelle mit den Bestell- beziehungsweise Rechnungsdaten, eine Artikeltabelle sowie eine Tabelle, die beide in Beziehung bringt und die Bestellpositionen enth&auml;lt. Diese Tabelle dient als Verkn&uuml;pfungstabelle und erzeugt eine m:n-Beziehung zwischen der Bestell- und der Artikeltabelle.<\/p>\n<p>F&uuml;r beides enth&auml;lt die Beispieldatenbank einfache Beispieltabellen und -formulare. Im richtigen Leben w&uuml;rden diese weit mehr Informationen enthalten, aber zu Beispielzwecken reichen die vorhandenen Felder aus.<\/p>\n<p><b>Daten aus 1:n-Beziehungen kopieren<\/b><\/p>\n<p>Bild 1 zeigt die beiden Tabellen der 1:n-Beziehung. Die Daten dieser Tabellen werden im Formular aus Bild 2 bearbeitet.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_03\/VerknuepfteDatenKopieren-web-images\/pic001.png\" alt=\"pic001.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1: Die Daten dieser Tabellen sollen komplett dupliziert werden.<\/span><\/b><\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_03\/VerknuepfteDatenKopieren-web-images\/pic003.png\" alt=\"pic003.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3: Anlegen einer Schaltfl&auml;che zum Duplizieren eines Datensatzes per Assistent<\/span><\/b><\/p>\n<p>Dieses Formular enth&auml;lt die Daten der Tabelle <b>tblRechnungen <\/b>sowie ein Unterformular, das mit der Tabelle <b>tblPositionen <\/b>als Datenherkunft best&uuml;ckt ist.<\/p>\n<p>Die beiden Formulare werden &uuml;ber das Feld <b>RechnungID <\/b>synchronisiert (siehe Eigenschaften <b>Verkn&uuml;pfen von <\/b>und <b>Verkn&uuml;pfen nach <\/b>des Unterformular-Steuerelements).<\/p>\n<p>Im unteren Bereich des Formulars befinden sich zwei Schaltfl&auml;chen, eine zum Schlie&szlig;en des Formulars und eine zum Anlegen einer neuen Rechnung basierend auf der aktuell angezeigten Rechnung.<\/p>\n<p>Letztere gilt es nun mit einer Funktion zu belegen, die zwei Aufgaben erledigt:<\/p>\n<ul>\n<li class=\"aufz-hlung\">das Kopieren des Datensatzes des Hauptformulars und<\/li>\n<li class=\"aufz-hlung\">das Kopieren der mit dem Datensatz im Hauptformular verkn&uuml;pften Datens&auml;tze im Unterformular.<\/li>\n<\/ul>\n<p>Es gibt mehrere Ans&auml;tze, um dies zu erledigen. Wer gerade in Access einsteigt, probiert m&ouml;glicherweise, eine passende Funktion &uuml;ber den Schaltfl&auml;chen-Assistenten zu finden.<\/p>\n<p>Dieser bietet beispielsweise die Option aus Bild 3 an, die folgenden Code erzeugt:<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_03\/VerknuepfteDatenKopieren-web-images\/pic002.png\" alt=\"pic002.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2: Formular zur Bearbeitung von Rechnungen und Rechnungspositionen<\/span><\/b><\/p>\n<pre>Private Sub Befehl8_Click()\r\n    ...\r\n    DoCmd.DoMenuItem acFormBar, acEditMenu, _\r\n    8, , acMenuVer70\r\n    DoCmd.DoMenuItem acFormBar, acEditMenu, _\r\n    2, , acMenuVer70\r\n    DoCmd.DoMenuItem acFormBar, acEditMenu, _\r\n    5, , acMenuVer70\r\n    ...\r\n    End Sub<\/pre>\n<p>Ganz davon abgesehen, dass dieser Code nur den im Hauptformular enthaltenen Datensatz kopiert, ist diese Vorgehensweise nat&uuml;rlich erstens v&ouml;llig veraltet und zweitens nicht angemessen, denn die <b>DoCmd<\/b>-Anweisungen sollte man allein aus Performance-Gr&uuml;nden nur einsetzen, wenn es wirklich nicht anders geht &#8211; erst recht nicht, wenn damit Men&uuml;befehle aufgerufen werden, die in einer seit vielen Jahren &uuml;berholten Access-Version festgelegt wurden (der obige Code wird mit Access 2003 &uuml;brigens unver&auml;ndert so erzeugt, erst ab Access 2007 gibt es eine neue Variante, die f&uuml;r VBA-Programmierer noch gruseliger anmutet: dort baut der Assistent ein Makro zusammen).<\/p>\n<p><!--30percent--><\/p>\n<p><b>Kopieren per DAO<\/b><\/p>\n<p>Prinzipiell gibt es zwei M&ouml;glichkeiten, Daten per VBA zu kopieren: Mit einer der Datenzugriffsbibliotheken DAO oder ADO (wobei DAO wohl die zukunftssichere Variante sein d&uuml;rfte) oder durch Absetzen geeigneter SQL-Aktionsabfragen mit der <b>Execute<\/b>-Methode des <b>Database<\/b>-Objekts.<\/p>\n<p>Viele greifen zur DAO-Methode, weil es ihnen der einzig sichere Weg scheint, um die ID des neu angelegten Rechnungsdatensatzes zu erfahren und diese anschlie&szlig;end den zu kopierenden Rechnungspositionen zuzuweisen. Dies k&ouml;nnte beispielsweise wie in Listing 1 aussehen. Im ersten Schritt erzeugt diese Routine einen neuen Datensatz in der Tabelle <b>tblRechnungen <\/b>und schreibt die aktuell im Formular angezeigten Daten dort hinein. Dabei ermittelt sie vor dem Speichern des neuen Datensatzes den neuen Wert von <b>RechnungID<\/b>. Dies ist wichtig, damit die kopierten Positionen-Datens&auml;tze direkt der richtigen Rechnung zugeordnet werden k&ouml;nnen. Der Rest ist Flei&szlig;arbeit &#8211; die Routine &ouml;ffnet eine Datensatzgruppe mit allen Positions-Datens&auml;tzen, die zur aktuellen Rechnung geh&ouml;ren, und eine weitere Datensatzgruppe, in die sie die Kopien schreibt &#8211; nat&uuml;rlich unter Angabe der <b>ArtikelID<\/b> des neuen Artikels.<\/p>\n<p class=\"kastentabelleheader\">Listing 1: Kopieren verkn&uuml;pfter Datens&auml;tze per DAO<\/p>\n<pre>Private Sub cmdNeueRechnung_Click()\r\n    ...\r\n    Set db = CurrentDb\r\n    Set rstRechnungen = db.OpenRecordset(&quot;tblRechnungen&quot;, dbOpenDynaset)\r\n    With rstRechnungen\r\n    .AddNew\r\n    !Rechnungsbetreff = Me!Rechnungsbetreff\r\n    !Rechnungstext = Me!Rechnungsbetreff\r\n    !Rechnungsbemerkungen = Me!Rechnungsbemerkungen\r\n    !KundeID = Me!KundeID\r\n    lngRechnungID = !RechnungID\r\n    .Update\r\n    .Close\r\n    End With\r\n    Set rstPositionenAlt = db.OpenRecordset(&quot;SELECT * FROM tblPositionen WHERE RechnungID = &quot; _\r\n    &amp; Me!RechnungID, dbOpenDynaset)\r\n    Set rstPositionenNeu = db.OpenRecordset(&quot;SELECT * FROM tblPositionen WHERE 1=2&quot;, dbOpenDynaset)\r\n    With rstPositionenAlt\r\n    Do While Not .EOF\r\n        rstPositionenNeu.AddNew\r\n        rstPositionenNeu!RechnungID = lngRechnungID\r\n        rstPositionenNeu!Position = !Position\r\n        rstPositionenNeu!Anzahl = !Anzahl\r\n        rstPositionenNeu!Einzelpreis = !Einzelpreis\r\n        rstPositionenNeu.Update\r\n        .MoveNext\r\n    Loop\r\n    .Close\r\n    End With\r\n    Me.Requery\r\n    Me.Recordset.FindFirst &quot;RechnungID = &quot; &amp; lngRechnungID\r\n    ...\r\n    End Sub<\/pre>\n<p><b>Kopieren per SQL<\/b><\/p>\n<p>Das Ganze kann man auch viel einfacher haben, allerdings braucht man dazu SQL-Kenntnisse, die sich viele aus Bequemlichkeit nicht aneignen. Ein Beispiel ist das Ermitteln der ID des neu angelegten Hauptdatensatzes, hier also <b>RechnungID<\/b>: Man kann zwar leicht mit einer <b>INSERT INTO<\/b>-Anweisung einen Datensatz der Tabelle <b>tblRechnungen <\/b>kopieren, aber es ist nicht ganz ohne, auch dessen ID zu ermitteln. Wenn man allein an der Datenbank arbeitet, funktioniert dies noch, indem man einfach die ID mit dem h&ouml;chsten Wert ermittelt, aber sobald mehrere Personen gleichzeitig auf solch eine Datenbank zugreifen, wird es kritisch: Es kann ja Person A einen Datensatz kopieren und dann die ID des neuesten Rechnungsdatensatzes ermitteln, aber wenn Person B genau zwischen Kopieren und Ermitteln der ID einen weiteren Datensatz in dieser Tabelle anlegt, erh&auml;lt Person A die falsche ID und die Daten sind nicht mehr korrekt.<\/p>\n<p>Abhilfe schafft eine <b>SELECT<\/b>-Anweisung, die statt der Angabe von Tabellen und Feldern nur das folgende Element abfragt:<\/p>\n<pre>SELECT @@IDENTITY<\/pre>\n<p>Dies liefert den zuletzt in der aktuellen Sitzung angelegten Autowert &#8211; allerdings nur, wenn der Datensatz durch eine Aktionsabfrage erzeugt wurde. Testen k&ouml;nnen Sie dies ganz einfach, indem Sie die gleiche Access-Datenbank zweimal &ouml;ffnen und zun&auml;chst in der ersten Datenbank die folgende Anweisung im Direktfenster absetzen:<\/p>\n<pre>CurrentDB.Execute &quot;INSERT INTO tblArtikel(Artikelname, Einzelpreis) VALUES(&apos;Artikel 7&apos;, 7)&quot;, dbfailonerror<\/pre>\n<p>Pr&uuml;fen Sie dann die ID ebenfalls im Direktfenster mit dieser Anweisung:<\/p>\n<pre> CurrentDB.OpenRecordset\r\n(&quot;SELECT @@IDENTITY&quot;).Fields(0)<\/pre>\n<p>F&uuml;gen Sie dann in der zweiten Instanz der Datenbank auf die gleiche Weise einen Datensatz hinzu und pr&uuml;fen Sie die ID in der ersten Datenbank &#8211; <b>@@IDENTITY <\/b>liefert dann immer noch den gleichen Wert.<\/p>\n<p>Nachdem Sie nun wissen, wie Sie an die ID des neuen Rechnungsdatensatzes kommen, brauchen Sie nur noch die passenden SQL-Anweisungen zusammenzusetzen und die Routine aus Listing 2 zu verwenden.<\/p>\n<p class=\"kastentabelleheader\">Listing 2: Anlegen einer neuen Rechnung samt Positionen<\/p>\n<pre>Private Sub NeueRechnungSQL_Click()\r\n    Dim db As DAO.Database\r\n    Dim lngRechnungID As Long\r\n    Set db = CurrentDb\r\n    db.Execute &quot;INSERT INTO tblRechnungen SELECT Rechnungsbetreff, Rechnungstext, &quot; _\r\n    &amp; &quot;Rechnungsbemerkungen, KundeID FROM tblRechnungen &quot; _\r\n    &amp; &quot;WHERE RechnungID = &quot; &amp; Me!RechnungID, dbFailOnError\r\n    If db.RecordsAffected = 1 Then\r\n        lngRechnungID = db.OpenRecordset(&quot;SELECT @@IDENTITY&quot;).Fields(0)\r\n        db.Execute &quot;INSERT INTO tblPositionen SELECT Position, Anzahl, Einzelpreis, &quot; _\r\n        &amp; lngRechnungID &amp; &quot; AS RechnungID FROM tblPositionen WHERE RechnungID = &quot; _\r\n        &amp; Me!RechnungID, dbFailOnError\r\n    End If\r\n    Me.Requery\r\n    Me.Recordset.FindFirst &quot;RechnungID = &quot; &amp; lngRechnungID\r\n    End Sub<\/pre>\n<p>Diese kopiert mit einer <b>INSERT INTO <\/b>den Inhalt des aktuellen Rechnungsdatensatzes, pr&uuml;ft mit der <b>RecordsAffected<\/b>-Eigenschaft, ob ein Datensatz angelegt wurde, und ermittelt die ID der neu angelegten Rechnung, bevor sie die vorhandenen Positionsdatens&auml;tze unter Ber&uuml;cksichtigung der neuen <b>ArtikelID <\/b>in die Tabelle <b>tblArtikel <\/b>kopiert.<\/p>\n<p>Schlie&szlig;lich aktualisiert die Routine die Datenherkunft des Formulars und springt zum neu angelegten Datensatz.<\/p>\n<p class=\"zwischen-berschrift-oberer-spaltenrand\">Kopieren von Daten in m:n-Beziehungen<\/p>\n<p>In Anbetracht dessen, dass SQL in den meisten F&auml;llen schneller ist als DAO, betrachten wir f&uuml;r das Kopieren von in m:n-Beziehung stehenden Daten nur noch die SQL-Variante.<\/p>\n<p>In der Beispieldatenbank finden Sie die drei Tabellen <b>tblBestellungen <\/b>und <b>tblArtikel<\/b>, die &uuml;ber die Tabelle <b>tblBestellpositionen <\/b>miteinander verkn&uuml;pft sind (siehe Bild 4). <\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_03\/VerknuepfteDatenKopieren-web-images\/pic004.png\" alt=\"pic004.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4: m:n-Beziehung zwischen Bestellungen und Artikeln<\/span><\/b><\/p>\n<p>Die Schaltfl&auml;che zum Kopieren der verkn&uuml;pften Datens&auml;tze liefert das Formular aus Bild 5.<\/p>\n<p><img decoding=\"async\" src=\"..\/fileadmin\/_temp_\/2008_03\/VerknuepfteDatenKopieren-web-images\/pic005.png\" alt=\"pic005.png\" \/><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5: Dieses Formular kopiert die Daten aus m:n-Beziehungen.<\/span><\/b><\/p>\n<p>Dahinter verbirgt sich eine ganz &auml;hnliche Technik wie f&uuml;r das Kopieren von 1:n-Daten, was ja auch logisch ist:<\/p>\n<p>Die Artikel im n-Teil der Beziehung werden auch im Zusammenhang mit der Bestellung nicht ber&uuml;hrt, sondern nur referenziert &#8211; das hei&szlig;t, dass man die in der Tabelle <b>tblArtikel <\/b>enthaltenen Datens&auml;tze auch nicht mitkopieren muss (s. Listing 3).<\/p>\n<p class=\"kastentabelleheader\">Listing 3: Das Kopieren von per m:n-Beziehung verkn&uuml;pften Daten ist prinzipiell mit der Vorgehensweise bei 1:n-Beziehungen identisch.<\/p>\n<pre>Private Sub cmdNeueRechnung_Click()\r\n    Dim db As DAO.Database\r\n    Dim lngBestellungID As Long\r\n    Set db = CurrentDb\r\n    db.Execute &quot;INSERT INTO tblBestellungen SELECT Bestelldatum, Rechnungsdatum, KundeID &quot; _\r\n    &amp; &quot;FROM tblBestellungen WHERE BestellungID = &quot; &amp; Me!BestellungID, dbFailOnError\r\n    If db.RecordsAffected &gt; 0 Then\r\n        lngBestellungID = db.OpenRecordset(&quot;SELECT @@IDENTITY&quot;, dbOpenDynaset).Fields(0)\r\n        db.Execute &quot;INSERT INTO tblBestellpositionen &quot; _\r\n        &amp; &quot;SELECT &quot; &amp; lngBestellungID &amp; &quot; AS BestellungID, ArtikelID &quot; _\r\n        &amp; &quot;FROM tblBestellpositionen WHERE BestellungID = &quot; &amp; Me!BestellungID, dbFailOnError\r\n    End If\r\n    Me.Requery\r\n    Me.Recordset.FindFirst &quot;BestellungID = &quot; &amp; lngBestellungID\r\n    End Sub<\/pre>\n<\/p>\n<h2>Downloads zu diesem Beitrag<\/h2>\n<p>Enthaltene Beispieldateien:<\/p>\n<p>VerknuepfteDatenKopieren.mdb<\/p>\n<p><a href=\"..\/fileadmin\/beispiele\/09C0A00F-FF7F-47A4-9254-3A006B10C929\/aiu_607.zip\">Download<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wer mal eine Rechnungsverwaltung entwickelt und vielleicht auch eingesetzt hat, kennt das: Ach, der Kunde hat doch schon mal bestellt &#8230; und sogar fast die gleichen Positionen! Da w&auml;re es doch praktisch, wenn man den alten Rechnungsdatensatz einfach kopieren k&ouml;nnte. Wie das funktioniert, zeigt Ihnen dieser Beitrag f&uuml;r die relevanten Beziehungsarten, also 1:n- und m:n-Beziehungen.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"categories":[662008,66032008,44000029,44000025],"tags":[],"class_list":["post-55000607","post","type-post","status-publish","format-standard","hentry","category-662008","category-66032008","category-Abfragetechnik_und_SQL","category-VBA_und_Programmiertechniken"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Daten aus verkn&uuml;pften Tabellen kopieren - Access im Unternehmen<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Daten aus verkn&uuml;pften Tabellen kopieren\" \/>\n<meta property=\"og:description\" content=\"Wer mal eine Rechnungsverwaltung entwickelt und vielleicht auch eingesetzt hat, kennt das: Ach, der Kunde hat doch schon mal bestellt ... und sogar fast die gleichen Positionen! Da w&auml;re es doch praktisch, wenn man den alten Rechnungsdatensatz einfach kopieren k&ouml;nnte. Wie das funktioniert, zeigt Ihnen dieser Beitrag f&uuml;r die relevanten Beziehungsarten, also 1:n- und m:n-Beziehungen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2021-03-22T16:19:20+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg05.met.vgwort.de\/na\/a2d53eb2dde6434ca9911acd7fbff7e8\" \/>\n<meta name=\"author\" content=\"Andr\u00e9 Minhorst\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Andr\u00e9 Minhorst\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"8\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_aus_verknuepften_Tabellen_kopieren\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_aus_verknuepften_Tabellen_kopieren\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Daten aus verkn&uuml;pften Tabellen kopieren\",\"datePublished\":\"2021-03-22T16:19:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_aus_verknuepften_Tabellen_kopieren\\\/\"},\"wordCount\":1291,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_aus_verknuepften_Tabellen_kopieren\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/a2d53eb2dde6434ca9911acd7fbff7e8\",\"articleSection\":[\"2008\",\"3\\\/2008\",\"Abfragetechnik und SQL\",\"VBA und Programmiertechniken\"],\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_aus_verknuepften_Tabellen_kopieren\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_aus_verknuepften_Tabellen_kopieren\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_aus_verknuepften_Tabellen_kopieren\\\/\",\"name\":\"Daten aus verkn&uuml;pften Tabellen kopieren - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_aus_verknuepften_Tabellen_kopieren\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_aus_verknuepften_Tabellen_kopieren\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/a2d53eb2dde6434ca9911acd7fbff7e8\",\"datePublished\":\"2021-03-22T16:19:20+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_aus_verknuepften_Tabellen_kopieren\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_aus_verknuepften_Tabellen_kopieren\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_aus_verknuepften_Tabellen_kopieren\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/a2d53eb2dde6434ca9911acd7fbff7e8\",\"contentUrl\":\"http:\\\/\\\/vg05.met.vgwort.de\\\/na\\\/a2d53eb2dde6434ca9911acd7fbff7e8\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Daten_aus_verknuepften_Tabellen_kopieren\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Daten aus verkn&uuml;pften Tabellen kopieren\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"name\":\"Access im Unternehmen\",\"description\":\"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access\",\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/access-im-unternehmen.de\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\",\"name\":\"Andr\u00e9 Minhorst Verlag\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"contentUrl\":\"https:\\\/\\\/access-im-unternehmen.de\\\/wp-content\\\/uploads\\\/2019\\\/09\\\/aiu_wp.png\",\"width\":370,\"height\":111,\"caption\":\"Andr\u00e9 Minhorst Verlag\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\",\"name\":\"Andr\u00e9 Minhorst\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g\",\"caption\":\"Andr\u00e9 Minhorst\"}}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Daten aus verkn&uuml;pften Tabellen kopieren - Access im Unternehmen","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/","og_locale":"de_DE","og_type":"article","og_title":"Daten aus verkn&uuml;pften Tabellen kopieren","og_description":"Wer mal eine Rechnungsverwaltung entwickelt und vielleicht auch eingesetzt hat, kennt das: Ach, der Kunde hat doch schon mal bestellt ... und sogar fast die gleichen Positionen! Da w&auml;re es doch praktisch, wenn man den alten Rechnungsdatensatz einfach kopieren k&ouml;nnte. Wie das funktioniert, zeigt Ihnen dieser Beitrag f&uuml;r die relevanten Beziehungsarten, also 1:n- und m:n-Beziehungen.","og_url":"https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/","og_site_name":"Access im Unternehmen","article_published_time":"2021-03-22T16:19:20+00:00","og_image":[{"url":"http:\/\/vg05.met.vgwort.de\/na\/a2d53eb2dde6434ca9911acd7fbff7e8","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"8\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Daten aus verkn&uuml;pften Tabellen kopieren","datePublished":"2021-03-22T16:19:20+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/"},"wordCount":1291,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/a2d53eb2dde6434ca9911acd7fbff7e8","articleSection":["2008","3\/2008","Abfragetechnik und SQL","VBA und Programmiertechniken"],"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/","url":"https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/","name":"Daten aus verkn&uuml;pften Tabellen kopieren - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/#primaryimage"},"thumbnailUrl":"http:\/\/vg05.met.vgwort.de\/na\/a2d53eb2dde6434ca9911acd7fbff7e8","datePublished":"2021-03-22T16:19:20+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/#primaryimage","url":"http:\/\/vg05.met.vgwort.de\/na\/a2d53eb2dde6434ca9911acd7fbff7e8","contentUrl":"http:\/\/vg05.met.vgwort.de\/na\/a2d53eb2dde6434ca9911acd7fbff7e8"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Daten_aus_verknuepften_Tabellen_kopieren\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Daten aus verkn&uuml;pften Tabellen kopieren"}]},{"@type":"WebSite","@id":"https:\/\/access-im-unternehmen.de\/#website","url":"https:\/\/access-im-unternehmen.de\/","name":"Access im Unternehmen","description":"Das Magazin f\u00fcr Datenbankentwickler auf Basis von Microsoft Access","publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/access-im-unternehmen.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/access-im-unternehmen.de\/#organization","name":"Andr\u00e9 Minhorst Verlag","url":"https:\/\/access-im-unternehmen.de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/","url":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","contentUrl":"https:\/\/access-im-unternehmen.de\/wp-content\/uploads\/2019\/09\/aiu_wp.png","width":370,"height":111,"caption":"Andr\u00e9 Minhorst Verlag"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f","name":"Andr\u00e9 Minhorst","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1b9d010cf1716692cb9c34f21554e07d17d461acaea5b61b8cb21cbec678d48a?s=96&d=mm&r=g","caption":"Andr\u00e9 Minhorst"}}]}},"_links":{"self":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000607","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/comments?post=55000607"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000607\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000607"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000607"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000607"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}