{"id":55000218,"date":"2004-06-01T00:00:00","date_gmt":"2020-05-06T15:17:44","guid":{"rendered":"http:\/\/access-im-unternehmen.aix-dev.de\/aiu\/?p=218"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-30T00:00:00","slug":"Datenuebernahme_von_Datenbank_zu_Datenbank","status":"publish","type":"post","link":"https:\/\/access-im-unternehmen.de\/Datenuebernahme_von_Datenbank_zu_Datenbank\/","title":{"rendered":"Daten&uuml;bernahme von Datenbank zu Datenbank"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/vg04.met.vgwort.de\/na\/329734894f0c415d860c607eb830404f\" width=\"1\" height=\"1\" alt=\"\"><\/p>\n<p><b>Andr&eacute; Minhorst, Duisburg<\/b><\/p>\n<p><b>Neue Versionen von Datenbankanwendungen m&uuml;ssen eine M&ouml;glichkeit bieten, die Daten der Vorg&auml;ngerversion zu importieren. Optimalerweise erfolgt dieser Import weitgehend automatisch, was aber einiges an Vorarbeit bei der Entwicklung der neuen Version erfordert. Damit Sie den Benutzern Ihrer Datenbank gr&ouml;&szlig;tm&ouml;glichen Komfort beim Versionswechsel erm&ouml;glichen k&ouml;nnen, lernen Sie im vorliegenden Beitrag einige Varianten f&uuml;r den Import bestehender Daten in eine neue Datenbank kennen.<\/b><\/p>\n<p>Es gibt prinzipiell zwei Arten von &auml;nderungen an Datenbankanwendungen: Die erste betrifft die Benutzeroberfl&auml;che, worunter unter Access Abfragen, Formulare und Berichte sowie die in den Klassen- und Standardmodulen versteckte Programmlogik fallen. Die zweite Art von &auml;nderungen zielt auf das Datenmodell und damit auf die in einer Datenbank enthaltenen Tabellen.<\/p>\n<p>Der wichtigste Unterschied der beiden Arten ist, dass die erste durch den Austausch der Benutzeroberfl&auml;che, die theoretisch in einem Datenbankfrontend gekapselt sein k&ouml;nnte, erledigt werden kann. Und selbst, wenn die Benutzeroberfl&auml;che und die Daten in derselben Datenbank untergebracht sind, k&ouml;nnen Sie immer noch eine neue Datenbank mit angepasster Benutzeroberfl&auml;che, aber ohne Tabellen als neues Datenbankfrontend verwenden. In dem Fall w&uuml;rden Sie die bestehende Datenbank, die ja gleichzeitig Frontend und Backend ist, in ein Backend umfunktionieren, auf das die neue Frontenddatenbank zugreift.<\/p>\n<p>Wenn Sie aber das Datenmodell &auml;ndern, reicht es nicht aus, einfach das neue Datenbankbackend als Backend zu verwenden und die vormals komplette Datenbankanwendung in eine Frontenddatenbank umzufunktionieren, indem Sie die Datenbank einfach mit den Tabellen der neuen Backendtabelle verkn&uuml;pfen. Sie m&uuml;ssen ja immer noch die Daten aus der alten Datenbank in das neue Datenmodell &uuml;bertragen.<\/p>\n<p>Und wenn Sie das ohnehin erledigen m&uuml;ssen, k&ouml;nnen Sie auch direkt eine komplett neue Datenbank liefern, die vielleicht auch noch &uuml;berarbeitungen an der Benutzeroberfl&auml;che beinhaltet, und die bestehenden Daten in die neue Datenbank &uuml;bernehmen.<\/p>\n<p>Und hier sitzt der Hase im Pfeffer: Der f&uuml;r die Daten&uuml;bernahme erforderliche Algorithmus ist n&auml;mlich erstens keineswegs trivial und zweitens sicher von Datenbank zu Datenbank unterschiedlich.<\/p>\n<p>Eine der wichtigsten Aufgaben vor der Entwicklung einer Routine f&uuml;r den Import bestehender Daten in eine neue Datenbank ist die Analyse der Datenmodelle der alten und der neuen Datenbank. Einige grobe Hindernisse bei der einfachen &uuml;bernahme der Daten sind folgende:<\/p>\n<li>Das neue Datenmodell enth&auml;lt Prim&auml;rschl&uuml;sselfelder mit dem Felddatentyp Autowert. Die Werte dieser Felder k&ouml;nnen nicht ohne gr&ouml;&szlig;eren Aufwand in die neue Datenbank &uuml;bernommen werden.<\/li>\n<p><IMG height=\"332\" src=\"..\/fileadmin\/_temp_\/{46301BC8-2258-4CFB-BDE7-DA9200A38138}\/pic001.png\" width=\"489\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 1:  Import der Tabellenstruktur der Nordwinddatenbank<\/span><\/b><\/p>\n<li>Das Datenmodell der neuen Datenbank unterscheidet sich grob vom Vorg&auml;nger. Das kann zum Beispiel darin begr&uuml;ndet sein, dass das bestehende Datenmodell nicht sauber normalisiert ist oder die Felddatentypen nicht den Anspr&uuml;chen gen&uuml;gen, weil beispielsweise ein Textfeld doch mehr Zeichen als eingeplant ben&ouml;tigt.<\/li>\n<p>Abh&auml;ngig von diesen und weiteren Faktoren gibt es unterschiedliche M&ouml;glichkeiten, Daten aus fremden Datenbanken zu importieren. Dabei f&auml;llt zumindest der Import mit dem entsprechenden Assistenten weg, da der Vorgang optimalerweise komplett automatisiert wird.<\/p>\n<p>Je unterschiedlicher die Strukturen der Quell- und der Zieldatenbank sind, desto aufw&auml;ndiger wird der Import der Daten; in den meisten F&auml;llen sollte die Verkn&uuml;pfung der Quelltabellen mit der Zieldatenbank und die Verwendung einiger Aktionsabfragen aber ausreichend sein. In manchen F&auml;llen kann aber auch die Verwendung von DAO beziehungsweise ADO erforderlich sein, um die alten Daten in das neue Format zu pressen.<\/p>\n<p>F&uuml;r beide Vorgehensweisen kann das Verkn&uuml;pfen der Zieldatenbank mit den Tabellen der Quelldatenbank hilfreich sein &#8211; das ist sogar Voraussetzung, wenn die Daten per Aktionsabfragen von einer zur anderen Datenbank geschaufelt werden sollen (s. Kapitel 4).<\/p>\n<p>Wenn die Quelldatenbank relational verkn&uuml;pfte Tabellen enth&auml;lt, deren Prim&auml;rschl&uuml;sselwerte &uuml;ber Autowertfelder erzeugt werden, ist auch noch eine Anpassung der Zieltabellen erforderlich &#8211; mehr dazu in Kapitel 5.<\/p>\n<p>Sind die Zieltabellen auf den Import von verkn&uuml;pften Tabellen mit oder ohne Autowertfelder vorbereitet, steht dem Import per Aktionsabfragen nichts mehr im Wege (s. Kapitel 7).<\/p>\n<p>F&uuml;r die nachfolgenden Beispiele ben&ouml;tigen Sie zwei Beispieldatenbanken: eine mit den Originaldaten und eine mit der &uuml;berarbeiteten Tabellenstruktur, die die Originaldaten aufnehmen soll.<\/p>\n<p>Als Originaltabelle dient die Nordwind-Datenbank und die zu f&uuml;llende Datenbank k&ouml;nnen Sie mit Hilfe der folgenden Anleitung selbst erstellen:<\/p>\n<li>Legen Sie eine neue, leere Datenbank an.<\/li>\n<li>F&uuml;hren Sie den Men&uuml;befehl Datei ( Externe Daten ( Importieren&#8230; aus.<\/li>\n<li>W&auml;hlen Sie im nun erscheinenden Importieren-Dialog die Nordwind-Datenbank aus.<\/li>\n<li>W&auml;hlen Sie alle Tabellen der Nordwind-Datenbank aus.<\/li>\n<li>Erweitern Sie das Dialogfenster durch einen Klick auf die Schaltfl&auml;che Optionen.<\/li>\n<li>W&auml;hlen Sie hier im Bereich Tabellen importieren die Option Nur Definitionen aus (siehe Bild 1). (<\/li>\n<pre>Public Sub DatenLoeschen()\r\n    Dim db As DAO.Database\r\n    Set db = CurrentDb\r\n    On Error GoTo DatenLoeschen_Err\r\n    db.Execute \"DELETE FROM Bestelldetails\", dbFailOnError\r\n    db.Execute \"DELETE FROM Artikel\", dbFailOnError\r\n    db.Execute \"DELETE FROM Lieferanten\", dbFailOnError\r\n    db.Execute \"DELETE FROM Kategorien\", dbFailOnError\r\n    db.Execute \"DELETE FROM Bestellungen\", dbFailOnError\r\n    db.Execute \"DELETE FROM Personal\", dbFailOnError\r\n    db.Execute \"DELETE FROM Versandfirmen\", dbFailOnError\r\n    db.Execute \"DELETE FROM Kunden\", dbFailOnError\r\n    Exit Sub\r\nDatenLoeschen_Err:\r\n    MsgBox \"Fehlernummer: \" & Err.Number & vbCrLf & \"Fehlerbeschreibung: \" _        & Err.Description\r\nEnd Sub<\/pre>\n<p><b>Quellcode 1<\/b><\/p>\n<p>Wenn Sie die Tabellen auf die genannte Weise importiert haben, m&uuml;ssen Sie nicht zuerst die Daten aus jeder einzelnen Tabelle l&ouml;schen.<\/p>\n<p>Wenn Sie sp&auml;ter den Urzustand der Tabellen reproduzieren, also die Daten l&ouml;schen und die Autowertz&auml;hler wiederherstellen m&ouml;chten, k&ouml;nnen Sie das auf zwei Arten durchf&uuml;hren:<\/p>\n<li>&ouml;ffnen Sie die Tabellen jeweils einzeln, markieren Sie alle Datens&auml;tze und l&ouml;schen Sie diese oder erstellen Sie sich eine kleine Routine zum L&ouml;schen der Tabellen, die Sie per Aufruf im Testfenster starten (s. Quellcode 1). Dabei m&uuml;ssen Sie darauf achten, dass Sie immer erst die Daten aus den Tabellen l&ouml;schen, auf die kein Fremdschl&uuml;sselfeld einer oder mehrerer anderer Tabellen verweist. Im Anschluss an das L&ouml;schen der Daten komprimieren Sie die Datenbank &uuml;ber den folgenden Men&uuml;befehl, wobei der Hauptzweck im Initialisieren der Autowertfelder liegt: Extras ( Datenbank-Dienstprogramme ( Datenbank komprimieren und reparieren&#8230;<\/li>\n<p>Der einfachste Fall f&uuml;r den Import bestehender Daten ergibt sich, wenn die zu importierenden Daten aus Tabellen stammen, die nicht mit anderen Tabellen verkn&uuml;pft sind. In dem Fall k&ouml;nnen die Daten einfach von der einen Tabelle in die andere importiert werden &#8211; gegebenenfalls sogar mit dem Import-Assistenten von Access. Da Sie hier allerdings automatisierte M&ouml;glichkeiten zum Import von Daten kennen lernen sollen, f&auml;llt diese M&ouml;glichkeit im Rahmen des vorliegenden Beitrags weg.<\/p>\n<h2>Tabelle verkn&uuml;pfen<\/h2>\n<p>Die Funktion LinkTable dient der Erstellung einer Verkn&uuml;pfung der aktuellen Datenbank mit einer Tabelle einer fremden Datenbank. Die Anwendung dieser Funktion sieht beispielsweise folgenderma&szlig;en aus:<\/p>\n<pre>Call LinkTable(\"&lt;Pfad&gt;\\Nordwind.mdb\", _    \"Artikel\", \"ArtikelTemp\")<\/pre>\n<p>Mit diesem Aufruf erstellen Sie eine Verkn&uuml;pfung zu der Tabelle Artikel der Nordwind-Datenbank unter dem Namen ArtikelTemp (siehe Bild 2). Die Fehlerbehandlung der Funktion f&auml;ngt einen Fehler gezielt ab. Dieser tritt auf, wenn bereits eine Tabelle mit dem Namen der zu erstellenden Verkn&uuml;pfung vorhanden ist. In dem Fall wird die vorhandene Verkn&uuml;pfung mit der weiter unten beschriebenen Funktion Unlink zun&auml;chst entfernt.<\/p>\n<pre>Public Function LinkTable(strDatabaseSource As String, strTableSource As String, _    strTableDestination As String)\r\n    Dim dbSource As DAO.Database\r\n    Dim dbTarget As DAO.Database\r\n    Dim tdf As DAO.TableDef\r\n    On Error GoTo LinkTable_Err\r\n    Set dbSource = DBEngine.Workspaces(0).OpenDatabase(strDatabaseSource)\r\n    Set dbDestination = CurrentDb\r\n    Set tdf = dbDestination.CreateTableDef(strTableDestination)\r\n    tdf.Connect = \";DATABASE=\" & strDatabaseSource\r\n    tdf.SourceTableName = strTableSource\r\n    dbDestination.TableDefs.Append tdf\r\n    LinkTable = True\r\nLinkTable_Exit:\r\n    dbSource.Close\r\n    Set dbSource = Nothing\r\n    Set dbDestination = Nothing\r\n    Set tdf = Nothing\r\n    Exit Function\r\nLinkTable_Err:\r\n    If Err.Number = 3012 Then\r\n        If UnlinkTable(strTableDestination) = True Then\r\n            Resume\r\n        Else\r\n            LinkTable = False\r\n        End If\r\n    Else\r\n        LinkTable = False\r\n    End If\r\n    Resume LinkTable_Exit\r\nEnd Function<\/pre>\n<p><!--30percent--><\/p>\n<p><b>Quellcode 2<\/b><\/p>\n<pre>Public Function UnlinkTable(strTable As String)\r\n    Dim db As Database\r\n    Set db = CurrentDb\r\n    On Error GoTo UnlinkTable_Err\r\n    db.TableDefs.Delete (strTable)\r\n    UnlinkTable = True\r\nUnlinkTable_Exit:\r\n    Set db = Nothing\r\n    Exit Function\r\nUnlinkTable_Err:\r\n    UnlinkTable = False\r\n    GoTo UnlinkTable_Exit\r\nEnd Function<\/pre>\n<p><b>Quellcode 3<\/b><\/p>\n<p><IMG height=\"339\" src=\"..\/fileadmin\/_temp_\/{46301BC8-2258-4CFB-BDE7-DA9200A38138}\/pic002.png\" width=\"433\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 2:  Eine frisch verkn&uuml;pfte Tabelle im Datenbankfenster<\/span><\/b><\/p>\n<h2>Verkn&uuml;pfung l&ouml;schen<\/h2>\n<pre>Public Function ImportTable(strDatabaseSource As String, strTableSource As String, _    strTableDestination As String, strTableSourceTemp As String, _    strInsertSQL As String)\r\n    Dim db As Database\r\n    Set db = CurrentDb\r\n    On Error GoTo ImportTable_Err\r\n    If LinkTable(strDatabaseSource, strTableSource, strTableSourceTemp) = True Then\r\n        db.Execute (strInsertSQL), dbFailOnError\r\n        UnlinkTable (strTableSource)\r\n        ImportTable = True\r\n    Else\r\n        ImportTable = False\r\n    End If\r\nImportTable_Exit:\r\n    Set db = Nothing\r\n    Exit Function\r\nImportTable_Err:\r\n    ImportTable = False\r\n    GoTo ImportTable_Exit\r\nEnd Function<\/pre>\n<p><b>Quellcode 3<\/b><\/p>\n<p>Das L&ouml;schen der Verkn&uuml;pfung per VBA erledigt die Funktion UnlinkTable (s. Quellcode 2). Sie verwendet die Delete-Methode der TableDefs-Auflistung des Database-Objekts mit dem Tabellennamen als einzigem Argument.<\/p>\n<p>Wenn Sie sich vorstellen, dass die Tabelle Personal der Nordwind-Datenbank nicht mit anderen Tabellen verkn&uuml;pft ist, kann sie gut als Beispiel f&uuml;r den Import einer allein stehenden Tabelle dienen.<\/p>\n<p>Voraussetzung f&uuml;r die nachfolgend vorgestellte Vorgehensweise ist das Vorhandensein einer gef&uuml;llten Personaltabelle in der Nordwind-Datenbank und einer leeren Personaltabelle in der Beispieldatenbank.<\/p>\n<p>Die Funktion ImportTable (s. Quellcode 3) dient zum Import der Daten einer externen Tabelle und hat f&uuml;nf Parameter:<\/p>\n<li>strDatabaseSource: Datenbank, aus der die Daten importiert werden<\/li>\n<li>strTableSource: Quelltabelle<\/li>\n<li>strTableDestination: Zieltabelle<\/li>\n<li>strTableSourceTemp: Name der verkn&uuml;pften Tabelle in der Zieldatenbank<\/li>\n<li>strInsertSQL: Insert-Statement, mit dem die Daten aus der verkn&uuml;pften Tabelle in die Zieltabelle geschrieben werden<\/li>\n<p>Die Funktion verwendet zun&auml;chst die bereits beschriebene Funktion LinkTable, um eine Verkn&uuml;pfung zu der Tabelle herzustellen, aus der die Daten importiert werden sollen. Wenn die Verkn&uuml;pfung hergestellt ist, wird die angegebene Insert-Abfrage und somit der eigentliche Import ausgef&uuml;hrt und die Verkn&uuml;pfung zu der Quelltabelle wieder entfernt &#8211; nat&uuml;rlich &uuml;ber die oben genannte Funktion UnlinkTable.<\/p>\n<p>Der Funktionsaufruf f&uuml;r den Import der Tabelle Personal ist wegen der vielen Felder der Tabelle relativ umfangreich:<\/p>\n<pre>Call ImportTable(\"&lt;Pfad&gt;\\Nordwind.mdb\", \"Personal\", \"Personal\", \"PersonalTemp\", \"INSERT INTO Personal(Nachname, Vorname, Position, Anrede, Geburtsdatum, Einstellung, Stra&szlig;e, Ort, Region, PLZ, Land, [Telefon privat], [Durchwahl B&uuml;ro], Foto, Bemerkungen, [Vorgesetzte(r)]) SELECT Nachname, Vorname, Position, Anrede, Geburtsdatum, Einstellung, Stra&szlig;e, Ort, Region, PLZ, Land, [Telefon privat], [Durchwahl B&uuml;ro], Foto, Bemerkungen, [Vorgesetzte(r)] \"FROM PersonalTemp\")<\/pre>\n<h3>Praxis-Tipp<\/h3>\n<p>Die vorliegende Funktion &uuml;berpr&uuml;ft nicht, ob die Zieltabelle bereits Daten enth&auml;lt oder nicht, sondern schreibt die Daten einfach in die Tabelle. Wenn Sie m&ouml;chten, dass vorhandene Daten zuvor entfernt werden, m&uuml;ssen Sie an geeigneter Stelle noch eine entsprechende DELETE-Anweisung einbauen. <\/p>\n<p>Wenn die Werte der Prim&auml;rschl&uuml;sselfelder einer oder mehrerer Tabellen der Zieldatenbank per Autowert erzeugt werden und andere Tabellen per Fremdschl&uuml;sselfeld auf diese Felder verweisen, k&ouml;nnen Sie die Tabellen nicht einfach nacheinander mit der in Kapitel 5 beschriebenen Prozedur importieren. Der Grund daf&uuml;r ist, dass die Prim&auml;rschl&uuml;sselfelder der Tabellen der neuen Datenbank mit an Sicherheit grenzender Wahrscheinlichkeit nicht mit den Prim&auml;rschl&uuml;sselfeldern der Tabellen der Quelldatenbank &uuml;bereinstimmen. In dem Fall k&ouml;nnen Sie also die Werte der auf die Prim&auml;rschl&uuml;sselfelder verweisenden Fremdschl&uuml;sselfelder nicht einfach in die neue Tabelle &uuml;bernehmen, da diese dann auf falsche oder nicht vorhandene Datens&auml;tze zeigen w&uuml;rden. Statt dessen gehen Sie folgenderma&szlig;en vor:<\/p>\n<li>Legen Sie f&uuml;r jede Tabelle der Zieltabelle, deren Prim&auml;rschl&uuml;sselfeld seine Werte per Autowert bezieht, ein weiteres Feld an. Der Name dieses Feldes lautet wie der Name des Prim&auml;rschl&uuml;sselfeldes mit angeh&auml;ngtem &#8222;Temp&#8220;.<\/li>\n<li>Verwenden Sie f&uuml;r den Import der Daten eine INSERT-Anweisung, die neben den anderen Feldinhalten den Wert des Prim&auml;rschl&uuml;sselfeldes der Quelltabelle in das neu angelegte Feld der Zieltabelle schreibt.<\/li>\n<li>Wenn Sie nun Tabellen importieren, deren Fremdschl&uuml;sselfelder auf die soeben importierte Tabelle verweisen, verwenden Sie eine INSERT-Abfrage, die den Fremdschl&uuml;sselfeldern der Datens&auml;tze der neuen Tabelle den Wert des Prim&auml;rschl&uuml;sselfeldes des Datensatzes der verkn&uuml;pften Tabelle zuweist, dessen im tempor&auml;ren Feld gespeicherter Wert dem alten Fremdschl&uuml;ssel entspricht. (<\/li>\n<p>Leichter l&auml;sst sich das anhand eines Beispiels erl&auml;utern. Nehmen Sie die Tabellen Artikel und Kategorien sowie Lieferanten. Die Tabelle Kategorien der Zieldatenbank erh&auml;lt zun&auml;chst ein neues Feld zum Speichern des alten Prim&auml;rindex und sieht nun im Entwurf wie in Bild 3 aus.<\/p>\n<p><IMG height=\"165\" src=\"..\/fileadmin\/_temp_\/{46301BC8-2258-4CFB-BDE7-DA9200A38138}\/pic003.png\" width=\"287\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 3:  Die Tabelle Kategorien mit einem tempor&auml;ren Prim&auml;rschl&uuml;sselfeld<\/span><\/b><\/p>\n<pre>Call ImportTable(\"&lt;Pfad&gt;\\Nordwind.mdb\", \"Kategorien\", \"Kategorien\", _    \"KategorienTemp\", \"INSERT INTO Kategorien(Kategoriename, Beschreibung, \" _    &  \"Abbildung, [Kategorie-NrTemp]) SELECT Kategoriename, Beschreibung, \" _    & \"Abbildung, [Kategorie-Nr] FROM KategorienTemp\")<\/pre>\n<p><b>Quellcode 4<\/b><\/p>\n<pre>Call ImportTable(\"&lt;Pfad&gt;\\Nordwind.mdb\", \"Lieferanten\", \"Lieferanten\", _    \"LieferantenTemp\", \"INSERT INTO Lieferanten(Firma, Kontaktperson, Position, \" _    & \"Stra&szlig;e, Ort, Region, PLZ, Land, Telefon, Telefax, Homepage, \" _    & \"[Lieferanten-NrTemp]) SELECT Firma, Kontaktperson, Position, Stra&szlig;e, Ort, \" _    & \"Region, PLZ, Land, Telefon, Telefax, Homepage, [Lieferanten-Nr] \" _    & \"FROM LieferantenTemp\")<\/pre>\n<p><b>Quellcode 5<\/b><\/p>\n<pre>Call ImportTable(&lt;Pfad&gt;\\Nordwind.mdb\", \"Artikel\", \"Artikel\", \"ArtikelTemp\", _    \"INSERT INTO Artikel(Artikelname, Liefereinheit, Einzelpreis, Lagerbestand, \" _    & \"BestellteEinheiten, Mindestbestand, Auslaufartikel, [Kategorie-Nr], \" _    & \"[Lieferanten-Nr]) \" _    & \"SELECT Artikelname, Liefereinheit, Einzelpreis, Lagerbestand, \" _    & \"BestellteEinheiten, Mindestbestand, Auslaufartikel, \" _    & \"(SELECT t3.[Kategorie-Nr] AS [Kategorie-Nr] FROM Kategorien AS t3 \" _    & \"WHERE t3.[Kategorie-NrTemp] = t1.[Kategorie-Nr]), \" _    & \"(SELECT t2.[Lieferanten-Nr] AS [Lieferanten-Nr] FROM Lieferanten AS t2 \" _    & \"WHERE t2.[Lieferanten-NrTemp] = t1.[Lieferanten-Nr]) FROM ArtikelTemp AS t1\")<\/pre>\n<p><b>Quellcode 6<\/b><\/p>\n<p>Nun importieren Sie mit dem Aufruf der Funktion ImportUnboundTable aus Quellcode 4 die Daten der Tabelle Kategorien der Quelldatenbank:<\/p>\n<p>Wenn Sie das Funktionsergebnis per Debug.Print in das Testfenster ausgeben lassen, erfahren Sie direkt, ob der Import erfolgreich war.<\/p>\n<p>Die INSERT-Abfrage schreibt neben den eigentlichen Datenfeldern den Inhalt des Prim&auml;rschl&uuml;sselfeldes der Quelltabelle in das tempor&auml;re Prim&auml;rschl&uuml;sselfeld der Zieltabelle.<\/p>\n<p>Auf die gleiche Weise gehen Sie nun mit der Tabelle Lieferanten vor, denn auch die Datens&auml;tze dieser Tabelle sind mit der Tabelle Artikel verkn&uuml;pft.<\/p>\n<p>Nach dem Hinzuf&uuml;gen des tempor&auml;ren Feldes f&uuml;r den Prim&auml;rschl&uuml;ssel verwenden Sie den Aufruf aus Quellcode 5 f&uuml;r den Import der Daten.<\/p>\n<p>Und nun folgt der Clou: Mit dem n&auml;chsten Aufruf der Funktion ImportTable importieren Sie alle Daten der Tabelle Artikel und f&uuml;gen den Feldern [Kategorie-Nr] und [Lieferanten-Nr] der Tabelle automatisch die neuen Prim&auml;rschl&uuml;sselwerte der beiden verkn&uuml;pften Tabellen Kategorien und Lieferanten zu.<\/p>\n<p>Der Aufruf enth&auml;lt eine entsprechend aufw&auml;ndige INSERT-Anweisung zur Ermittlung der beiden neuen Werte f&uuml;r die Fremdschl&uuml;sselfelder (s. Quellcode 6). Um mit der INSERT-Abfrage die neuen Prim&auml;rschl&uuml;sselwerte der verkn&uuml;pften Tabellen zu ermitteln, verwendet die Abfrage zwei Unterabfragen. Die Nicht-Fremdschl&uuml;sselfelder der Tabelle werden wie in einer herk&ouml;mmlichen INSERT-Abfrage importiert, die folgende Syntax hat:<\/p>\n<pre>INSERT INTO &lt;NeueTabelle&gt; (&lt;Feld1Neu&gt;, &lt;Feld2Neu&gt;, ...) SELECT &lt;Feld1Alt&gt;, &lt;Feld2Alt&gt;, ... FROM &lt;AlteTabelle&gt;<\/pre>\n<p>Die Werte f&uuml;r die beiden Felder [Kategorie-Nr] und [Lieferanten-Nr] werden mit wenigen Unterschieden in diese Syntax eingearbeitet. Der erste Unterschied ist, dass statt eines Ausdrucks wie &lt;Feld1Alt&gt; eine Unterabfrage eingesetzt wird, die beispielsweise so aussieht:<\/p>\n<pre>SELECT [Lieferanten-Nr] AS [Lieferanten-Nr] FROM Lieferanten<\/pre>\n<p><IMG height=\"462\" src=\"..\/fileadmin\/_temp_\/{46301BC8-2258-4CFB-BDE7-DA9200A38138}\/pic004.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 4:  Eigenschaften des Feldes Position der Tabelle Lieferanten<\/span><\/b><\/p>\n<p>Es soll aber nicht irgendeine Lieferanten-Nummer aus der Tabelle Lieferanten verwendet werden, sondern diejenige, deren tempor&auml;re Lieferanten-Nummer aus der Quelldatenbank mit dem aktuellen Artikeldatensatz aus der Quelldatenbank &uuml;bereinstimmt. <\/p>\n<p>Und dazu muss in die Unterabfrage noch eine Bedingung eingebaut werden, die wiederum einen Wert aus der Hauptabfrage verwendet. Und damit die gleichnamigen Felder der Unterabfrage von denen der Hauptabfrage unterschieden werden k&ouml;nnen, verpassen Sie den in den beiden Abfragen verwendeten Tabellen noch Alias-Namen. Damit sieht die Unterabfrage f&uuml;r die Lieferanten-Nummer nun so aus, wobei t1 der Tabelle ArtikelTemp der Hauptabfrage, also der Quelltabelle, entspricht:<\/p>\n<pre>SELECT t2.[Lieferanten-Nr] AS [Lieferanten-Nr] FROM Lieferanten AS t2 WHERE t2.[Lieferanten-NrTemp] = t1.[Lieferanten-Nr]<\/pre>\n<p>Mit den oben genannten Funktionen haben Sie bereits alle Werkzeuge in der Hand, um komplette relationale Datenbanken zu importieren. Sicher gibt es den einen oder anderen Sonderfall, bei dem die Funktionen nicht greifen. In dem Fall m&uuml;ssen Sie wohl oder &uuml;bel eigene Prozeduren auf Basis von DAO oder ADO entwickeln, um die Daten in die Zieldatenbank zu kopieren.<\/p>\n<p>Wenn Sie beispielsweise die komplette Nordwind-Datenbank importieren m&ouml;chten, m&uuml;ssen Sie lediglich darauf achten, dass Sie die richtige Reihenfolge einhalten. Das hei&szlig;t, dass Sie zun&auml;chst alle Tabellen importieren, die keine Fremdschl&uuml;sselfelder haben und dementsprechend nicht auf andere Tabellen verweisen. Diesen Tabellen f&uuml;gen Sie tempor&auml;re Prim&auml;rschl&uuml;sselfelder mit den Prim&auml;rschl&uuml;sselwerten der bestehenden Datenbank hinzu. Anschlie&szlig;end importieren Sie die Tabellen, die mit diesen unabh&auml;ngigen Tabellen verkn&uuml;pft sind, und so weiter.<\/p>\n<p>Wenn Sie eine Tabelle aufteilen m&ouml;chten, um beispielsweise einen h&ouml;heren Grad der Normalisierung im Datenmodell zu erhalten, kommen Sie ebenfalls mit den oben genannten Funktionen aus. Angenommen Sie m&ouml;chten die Positionen der Kontaktpersonen aus der Tabelle Lieferanten in einer einzelnen Tabelle speichern und von der Lieferantentabelle darauf verweisen, dann gehen Sie folgenderma&szlig;en vor:<\/p>\n<pre>Call ImportTable(\"&lt;Pfad&gt;\\Nordwind.mdb\", \"Lieferanten\", \"tblPositionen\", _    LieferantenTemp\", \"INSERT INTO tblPositionen(Position) \" _    & \"SELECT DISTINCT Position FROM LieferantenTemp\")<\/pre>\n<p><b>Quellcode 7<\/b><\/p>\n<pre>Call ImportTable(&lt;Pfad&gt;\\Nordwind.mdb\", \"Lieferanten\", \"Lieferanten\", _    \"LieferantenTemp\", \"INSERT INTO Lieferanten(Firma, Kontaktperson, Position, \" _    & \"Stra&szlig;e, Ort, Region, PLZ, Land, Telefon, Telefax, Homepage) \" _    & \"SELECT Firma, Kontaktperson, (SELECT PositionID FROM tblPositionen AS t2 \" _    & \"WHERE t1.Position=t2.Position), Stra&szlig;e, Ort, Region, PLZ, Land, Telefon, \" _    & \"Telefax, Homepage FROM LieferantenTemp AS t1\")<\/pre>\n<p><b>Quellcode 8<\/b><\/p>\n<p><IMG height=\"293\" src=\"..\/fileadmin\/_temp_\/{46301BC8-2258-4CFB-BDE7-DA9200A38138}\/pic005.png\" width=\"500\" border=\"0\"><\/p>\n<p><b><\/b><\/p>\n<p><b><span style=\"color:darkgrey\">Bild 5:  Lieferanten mit Positionen aus einer separaten Tabelle<\/span><\/b><\/p>\n<li>Legen Sie in der neuen Datenbank eine Tabelle namens tblPositionen mit den beiden Feldern PositionID und Position an.<\/li>\n<li>&auml;ndern Sie den Datentyp des Feldes Position der Tabelle Lieferanten auf Zahl und stellen Sie die &uuml;brigen Eigenschaften dieses Feldes wie in Bild 4 ein.<\/li>\n<li>Rufen Sie die Funktion ImportTable (s. Quellcode 8) zweimal auf &#8211; einmal f&uuml;r den Import der Positionen aus der Tabelle Lieferanten in die Tabelle tblPositionen und dann f&uuml;r den Import der Daten der alten Lieferantentabelle in die neue Lieferantentabelle.<\/li>\n<p>Der erste Aufruf der Funktion sieht wie in Quellcode 7 aus. Dabei ist das INSERT-Statement so ausgelegt, dass jede Position nur einmal in die Tabelle tblPositionen kopiert wird.<\/p>\n<p>Anschlie&szlig;end verwenden Sie die Funktion f&uuml;r den Import der Daten aus der alten Lieferantentabelle in die neue, umstrukturierte Lieferantentabelle. Das Besondere an diesem Aufruf ist wiederum die INSERT-Abfrage: Sie verwendet ebenfalls eine Unterabfrage, die aus der Tabelle tblPositionen den Wert PositionID des Datensatzes ermittelt, dessen Wert f&uuml;r das Feld Position mit dem entsprechenden Wert aus der Quelltabelle &uuml;bereinstimmt. Die Positionen k&ouml;nnen nun in der Tabelle Lieferanten per Auswahlfeld aus der Tabelle tblPositionen ausgew&auml;hlt werden (siehe Bild 5).<\/p>\n<p>Mit den genannten Techniken k&ouml;nnen Sie die Tabellen der meisten Datenmodelle in die Tabellen anderer Datenbanken &uuml;berf&uuml;hren &#8211; auch wenn die Struktur der Datenmodelle nicht &uuml;bereinstimmt. Es gibt sicher Ausnahmen wie Tabellen mit rekursiven Beziehungen &#8211; hier sind dann entweder mehrere Schritte erforderlich oder Sie verwenden eine auf diese Tabelle zugeschnittene DAO-Routine. Im Beitrag Fahrtenbuch mit Import- und Stornierungsfunktion in der vorliegenden Ausgabe von Access im Unternehmen finden Sie einen kompletten Import, der auf den hier vorgestellten Funktionen basiert.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Neue Versionen von Datenbankanwendungen m&uuml;ssen eine M&ouml;glichkeit bieten, die Daten der Vorg&auml;ngerversion zu importieren. Optimalerweise erfolgt dieser Import weitgehend automatisch, was aber einiges an Vorarbeit bei der Entwicklung der neuen Version erfordert. Damit Sie den Benutzern Ihrer Datenbank gr&ouml;&szlig;tm&ouml;glichen Komfort beim Versionswechsel erm&ouml;glichen k&ouml;nnen, lernen Sie im vorliegenden Beitrag einige Varianten f&uuml;r den Import bestehender Daten in eine neue Datenbank kennen.<\/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":[662004,66032004,44000040,44000034],"tags":[],"class_list":["post-55000218","post","type-post","status-publish","format-standard","hentry","category-662004","category-66032004","category-Allgemein","category-ImportExport"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.9 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Daten&uuml;bernahme von Datenbank zu Datenbank - 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\/Datenuebernahme_von_Datenbank_zu_Datenbank\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Daten&uuml;bernahme von Datenbank zu Datenbank\" \/>\n<meta property=\"og:description\" content=\"Neue Versionen von Datenbankanwendungen m&uuml;ssen eine M&ouml;glichkeit bieten, die Daten der Vorg&auml;ngerversion zu importieren. Optimalerweise erfolgt dieser Import weitgehend automatisch, was aber einiges an Vorarbeit bei der Entwicklung der neuen Version erfordert. Damit Sie den Benutzern Ihrer Datenbank gr&ouml;&szlig;tm&ouml;glichen Komfort beim Versionswechsel erm&ouml;glichen k&ouml;nnen, lernen Sie im vorliegenden Beitrag einige Varianten f&uuml;r den Import bestehender Daten in eine neue Datenbank kennen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/access-im-unternehmen.de\/Datenuebernahme_von_Datenbank_zu_Datenbank\/\" \/>\n<meta property=\"og:site_name\" content=\"Access im Unternehmen\" \/>\n<meta property=\"article:published_time\" content=\"2020-05-06T15:17:44+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/vg04.met.vgwort.de\/na\/329734894f0c415d860c607eb830404f\" \/>\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=\"17\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenuebernahme_von_Datenbank_zu_Datenbank\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenuebernahme_von_Datenbank_zu_Datenbank\\\/\"},\"author\":{\"name\":\"Andr\u00e9 Minhorst\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#\\\/schema\\\/person\\\/13395c4bcd7d7963efe33be9c584d93f\"},\"headline\":\"Daten&uuml;bernahme von Datenbank zu Datenbank\",\"datePublished\":\"2020-05-06T15:17:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenuebernahme_von_Datenbank_zu_Datenbank\\\/\"},\"wordCount\":2737,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenuebernahme_von_Datenbank_zu_Datenbank\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/329734894f0c415d860c607eb830404f\",\"articleSection\":{\"0\":\"2004\",\"1\":\"3\\\/2004\",\"3\":\"Import\\\/Export\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenuebernahme_von_Datenbank_zu_Datenbank\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenuebernahme_von_Datenbank_zu_Datenbank\\\/\",\"url\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenuebernahme_von_Datenbank_zu_Datenbank\\\/\",\"name\":\"Daten&uuml;bernahme von Datenbank zu Datenbank - Access im Unternehmen\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenuebernahme_von_Datenbank_zu_Datenbank\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenuebernahme_von_Datenbank_zu_Datenbank\\\/#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/329734894f0c415d860c607eb830404f\",\"datePublished\":\"2020-05-06T15:17:44+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenuebernahme_von_Datenbank_zu_Datenbank\\\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenuebernahme_von_Datenbank_zu_Datenbank\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenuebernahme_von_Datenbank_zu_Datenbank\\\/#primaryimage\",\"url\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/329734894f0c415d860c607eb830404f\",\"contentUrl\":\"http:\\\/\\\/vg04.met.vgwort.de\\\/na\\\/329734894f0c415d860c607eb830404f\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/access-im-unternehmen.de\\\/Datenuebernahme_von_Datenbank_zu_Datenbank\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/access-im-unternehmen.de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Daten&uuml;bernahme von Datenbank zu Datenbank\"}]},{\"@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&uuml;bernahme von Datenbank zu Datenbank - 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\/Datenuebernahme_von_Datenbank_zu_Datenbank\/","og_locale":"de_DE","og_type":"article","og_title":"Daten&uuml;bernahme von Datenbank zu Datenbank","og_description":"Neue Versionen von Datenbankanwendungen m&uuml;ssen eine M&ouml;glichkeit bieten, die Daten der Vorg&auml;ngerversion zu importieren. Optimalerweise erfolgt dieser Import weitgehend automatisch, was aber einiges an Vorarbeit bei der Entwicklung der neuen Version erfordert. Damit Sie den Benutzern Ihrer Datenbank gr&ouml;&szlig;tm&ouml;glichen Komfort beim Versionswechsel erm&ouml;glichen k&ouml;nnen, lernen Sie im vorliegenden Beitrag einige Varianten f&uuml;r den Import bestehender Daten in eine neue Datenbank kennen.","og_url":"https:\/\/access-im-unternehmen.de\/Datenuebernahme_von_Datenbank_zu_Datenbank\/","og_site_name":"Access im Unternehmen","article_published_time":"2020-05-06T15:17:44+00:00","og_image":[{"url":"http:\/\/vg04.met.vgwort.de\/na\/329734894f0c415d860c607eb830404f","type":"","width":"","height":""}],"author":"Andr\u00e9 Minhorst","twitter_card":"summary_large_image","twitter_misc":{"Verfasst von":"Andr\u00e9 Minhorst","Gesch\u00e4tzte Lesezeit":"17\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/access-im-unternehmen.de\/Datenuebernahme_von_Datenbank_zu_Datenbank\/#article","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/Datenuebernahme_von_Datenbank_zu_Datenbank\/"},"author":{"name":"Andr\u00e9 Minhorst","@id":"https:\/\/access-im-unternehmen.de\/#\/schema\/person\/13395c4bcd7d7963efe33be9c584d93f"},"headline":"Daten&uuml;bernahme von Datenbank zu Datenbank","datePublished":"2020-05-06T15:17:44+00:00","mainEntityOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Datenuebernahme_von_Datenbank_zu_Datenbank\/"},"wordCount":2737,"commentCount":0,"publisher":{"@id":"https:\/\/access-im-unternehmen.de\/#organization"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Datenuebernahme_von_Datenbank_zu_Datenbank\/#primaryimage"},"thumbnailUrl":"http:\/\/vg04.met.vgwort.de\/na\/329734894f0c415d860c607eb830404f","articleSection":{"0":"2004","1":"3\/2004","3":"Import\/Export"},"inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/access-im-unternehmen.de\/Datenuebernahme_von_Datenbank_zu_Datenbank\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/access-im-unternehmen.de\/Datenuebernahme_von_Datenbank_zu_Datenbank\/","url":"https:\/\/access-im-unternehmen.de\/Datenuebernahme_von_Datenbank_zu_Datenbank\/","name":"Daten&uuml;bernahme von Datenbank zu Datenbank - Access im Unternehmen","isPartOf":{"@id":"https:\/\/access-im-unternehmen.de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/access-im-unternehmen.de\/Datenuebernahme_von_Datenbank_zu_Datenbank\/#primaryimage"},"image":{"@id":"https:\/\/access-im-unternehmen.de\/Datenuebernahme_von_Datenbank_zu_Datenbank\/#primaryimage"},"thumbnailUrl":"http:\/\/vg04.met.vgwort.de\/na\/329734894f0c415d860c607eb830404f","datePublished":"2020-05-06T15:17:44+00:00","breadcrumb":{"@id":"https:\/\/access-im-unternehmen.de\/Datenuebernahme_von_Datenbank_zu_Datenbank\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/access-im-unternehmen.de\/Datenuebernahme_von_Datenbank_zu_Datenbank\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/access-im-unternehmen.de\/Datenuebernahme_von_Datenbank_zu_Datenbank\/#primaryimage","url":"http:\/\/vg04.met.vgwort.de\/na\/329734894f0c415d860c607eb830404f","contentUrl":"http:\/\/vg04.met.vgwort.de\/na\/329734894f0c415d860c607eb830404f"},{"@type":"BreadcrumbList","@id":"https:\/\/access-im-unternehmen.de\/Datenuebernahme_von_Datenbank_zu_Datenbank\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/access-im-unternehmen.de\/"},{"@type":"ListItem","position":2,"name":"Daten&uuml;bernahme von Datenbank zu Datenbank"}]},{"@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\/55000218","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=55000218"}],"version-history":[{"count":0,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/posts\/55000218\/revisions"}],"wp:attachment":[{"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/media?parent=55000218"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/categories?post=55000218"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/access-im-unternehmen.de\/data\/wp\/v2\/tags?post=55000218"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}