Datensätze von Access 2.0 in Access 2000 export

Hallo,

folgendes Problem ist zu lösen:

Es existiert eine Access 2.0 DB und eine Access 2000 mit jeweils etwa 200 Tabellen.
Ziel ist es, Datensätze der 2.0-DB in die 2000-DB zu exportieren.
Das ganze soll automatisiert ablaufen und ich möchte von vornherein festlegen, welche Datensätze der 2.0-DB in welche Tabellen der 2000-DB exportiert werden sollen.
Problem hierbei ist, dass sich die Tabellenbezeichnungen und die Feldnamen beider Datenbanken unterscheiden.

Beispiel:

Access 2.0-DB:

Tabelle: Adressen
Feldbezeichnungen: Name, Vorname, Strasse
Datensatzanzahl: 500

Access 2000-DB

Tabelle: Mitarbeiter
Feldbezeichnungen: Name1, Vorname1, Strasse_Privat

Wie exportiere ich nun die Datensätze der Access 2.0-DB in die Access 2000-DB? Wie gesagt, dass ganze soll automatisiert ablaufen, da es sich um etwa 120 Tabellen handelt.

Um einen Lösungs-ANSATZ wäre ich sehr dankbar, da ich momentan echt auf dem Schlauch stehe. Liegt die Lösung in ODBC???

Gruß,
Tom

Hallo Tom

Es existiert eine Access 2.0 DB und eine Access 2000 mit
jeweils etwa 200 Tabellen.

Weiter unten schreibst du von 120 Tabellen… ist aber wurscht, oder?

Ziel ist es, Datensätze der 2.0-DB in die 2000-DB zu
exportieren.
Das ganze soll automatisiert ablaufen

Was stellst du dir unter „automatisiert“ vor? Dass du irgendwo einen Button drückst, und irgendeine geheimnisvolle Funktion weiss, welche alten und neuen Tabellen und Attribute korrespondieren? Irgendwie musst du das selber definieren und dann kann eine von dir selbstentwickelte Funktion diese Definitionen auswerten und die Daten ex/importieren. Sicher gibt es auch irgendwo für Geld so etwas zu kaufen, aber das ist wohl nicht das, was du willst.

und ich möchte von
vornherein festlegen, welche Datensätze der 2.0-DB in welche
Tabellen der 2000-DB exportiert werden sollen.

Also du willst auch nicht alle Daten exportieren, sondern in jeder Tabelle jeden Datensatz als „zu exportieren“ oder „nicht zu exportieren“ auswählen? Hier würde es sich doch anbieten, die Datensätze, die du nicht exportieren möchtest, vorher aus der 2.0-DB zu löschen.

Problem hierbei ist, dass sich die Tabellenbezeichnungen und
die Feldnamen beider Datenbanken unterscheiden.

Beispiel:

Access 2.0-DB:

Tabelle: Adressen
Feldbezeichnungen: Name, Vorname, Strasse
Datensatzanzahl: 500

Access 2000-DB

Tabelle: Mitarbeiter
Feldbezeichnungen: Name1, Vorname1, Strasse_Privat

Ist klar, siehe oben („Definitionen“)… du musst das irgendwie festlegen. Ich kann mir kein Programm vorstellen, das dir diese Arbeit abnimmt.
Gibt es denn für jede Tabelle aus 2.0 genau eine Tabelle aus 2000, oder musst du sogar die Daten aus einer Tabelle auf mehrere andere verteilen? Oder umgekehrt, mehrere 2.0-Tabellen müssen in eine 2000-Tabelle exportiert werden, Oder beides zusammen? Das würde die ganze Sache natürlich noch komplizierter machen.

Wie exportiere ich nun die Datensätze der Access 2.0-DB in die
Access 2000-DB? Wie gesagt, dass ganze soll automatisiert
ablaufen, da es sich um etwa 120 Tabellen handelt.

Um einen Lösungs-ANSATZ wäre ich sehr dankbar, da ich momentan
echt auf dem Schlauch stehe. Liegt die Lösung in ODBC???

ODBC kann dir die angesprochenen Definitionen auch nicht abnehmen. Das kennt die Zusammenhänge in deinen Datenbanken ja auch nicht.

2 Vorschläge kann ich dir machen.

  1. Hau-Ruck-Methode:
  • Du löschst die nicht zu exportierenden Datensätze aus der 2.0-DB.
  • Du bindest (oder kopierst) die 2.0-Tabellen in die 2000-DB ein.
  • Du erstellst für jede zu exportierende Tabelle eine „Anfügeabfrage“,
    z.B.:
    INSERT INTO Tab2000 (FeldA, FeldB, FeldC)
    SELECT FeldX, FeldY, FeldZ FROM Tab20;
  1. Aufwändige Methode
  • Du löschst die nicht zu exportierenden Datensätze aus der 2.0-DB.
  • Du bindest (oder kopierst) die 2.0-Tabellen in die 2000-DB ein.
  • Du erstellst eine erste Tabelle mit den beiden Attributen TAB2000
    und ATTR2000 und eine zweite Tabelle mit den beiden Attributen
    TAB20 und ATTR20. Diese Tabellen füllst du mit den
    Tabellendefinitionen der beteiligten Tabellen. Dies kannst du von
    Hand machen (dauert aber alleine wahrscheinlich schon länger als
    die Hau-Ruck-Methode), oder du schreibst dir eine Funktion, die die
    Tabellendefinitionen ausliest und in die beiden neuen Tabellen
    abspeichert.
  • Du erstellst eine dritte Tabelle mit den Attributen TAB2000,
    ATTR2000, TAB20 und ATTR20, in der du die nun schon mehrfach
    erwähnten Definitionen hinterlegst, welches Attribut in welches zu
    exportieren ist. Dabei verwendest du die beiden ersten Tabellen als
    Referenz. Auch das könntest du dir mit einer Funktion erleichtern,
    die dir z.B. schon mal alle Attribute abfüllt, die den gleichen
    Namen haben.
  • Du schreibst dir eine Funktion, die die dritte Tabelle auswertet,
    daraus entsprechende SQL-Statements generiert, diese ausführt und
    dadurch den „Export“ erledigt.

Gruss
Peter

Hi Peter,

danke für deine Lösungs-Ansätze.
Ich werde das Problem in den nächsten Tagen mal in die Hand nehmen.

Allerdings wollte ich meine Problembeschreibung noch ein wenig aktualisieren, da ich mich nicht konkret ausgedrückt habe.
Ich schrieb, dass ich vornherein festlegen möchte, welche Datensätze aus der DB-2.0 in die DB-2000 übernommen werden sollen. Im Grunde genommen müssen ALLE Datensätze (EINER Tabelle!!!)der DB-2.0 in die DB-2000, eben nur aus ausgewählten Tabellen. Wichtig ist hierbei, dass ich die Reihenfolge der Übernahme der Tabellen in meiner Funktion festlegen kann (wegen Primärschlüsseln/Indizes).

ODBC habe ich deshalb angesprochen, da ich mal etwas von DAO/ADO Datenzugriff gelesen habe und ich dachte, dass evtl. dort die Lösung liegt. Wenn ich das ganze aber auch per Makro oder auf ähnliche Weise lösen könnte, wäre das schon super!

Mit „automatisiert“ meinte ich in der Tat, das Drücken eines Buttons :smile:, dahinter soll eben ein von mir erstelltes Programm stecken. „Automatisiert“ deshalb, da ich diese Datenübernahme in etwa 100 Filialen einer Firma (mit je 90 Rechnern) durchführen soll.

Gruß,
Tom

Hallo Tom

danke für deine Lösungs-Ansätze.

Gerne!

Im Grunde genommen müssen ALLE Datensätze (EINER
Tabelle!!!)der DB-2.0 in die DB-2000, eben nur aus
ausgewählten Tabellen.

Ach so… kleines Missverständnis.

Wichtig ist hierbei, dass ich die
Reihenfolge der Übernahme der Tabellen in meiner Funktion
festlegen kann (wegen Primärschlüsseln/Indizes).

Ja, mit einem weiteren Attribut („Reihenfolge“) in der Steuertabelle sollte das kein Problem sein… wenn du die Reihenfolge kennst. Die kann man auch aus den in der DB definierten Beziehungen maschinell ermitteln.

ODBC habe ich deshalb angesprochen, da ich mal etwas von
DAO/ADO Datenzugriff gelesen habe und ich dachte, dass evtl.
dort die Lösung liegt.

Die Lösung für die Zuordnung der Tabellen und Attribute kann dir leider nichts und niemand abnehmen.

Wenn ich das ganze aber auch per Makro
oder auf ähnliche Weise lösen könnte, wäre das schon super!

Ja, aber „Makro“ wird nicht langen, da musst du schon zu VBA greifen.

Mit „automatisiert“ meinte ich in der Tat, das Drücken eines
Buttons :smile:, dahinter soll eben ein von mir erstelltes
Programm stecken.

OK, dann ist ja geklärt, was du mit „automatisiert“ meintest.

„Automatisiert“ deshalb, da ich diese
Datenübernahme in etwa 100 Filialen einer Firma (mit je 90
Rechnern) durchführen soll.

Holla, also 900 „Migrationen“… na, da wird die Ausführung wahrscheinlich länger dauern als die Entwicklung eines genau zugeschnittenen Tools.

Eine Frage noch von mir: Ist die 2000er-DB eigentlich leer, oder enthält die auch schon Daten. Und, wenn ja, vielleicht sogar schon Daten, die auch in der 2.0er-DB enthalten sind?

Gruss
Peter

Servus Peter!

zu ODBC (ADO/DAO):

„Die Lösung für die Zuordnung der Tabellen und Attribute kann dir leider nichts und niemand abnehmen.“

Das ist mir durchaus klar, ich möchte die Arbeit auch nicht auf irgendeine Maschine abwälzen, abgesehen davon, dass das nur schiefgehen würde. Ich wollte lediglich wissen, ob ich mit dieser Schnittstelle und den ADO/DAO-Methoden (?) mich auf dem richtigen Weg befinde bzw. ganz falsch liege.

Die 2000er-DB enthält zum Teil schon Daten, allerdings werden wir die komplett löschen und mit Daten der 2.0-DB füttern - also wird diese komplett leer sein.

Du hast den Umfang der Aktion ganz richtig abgesehen, das wird ganz schön Anstrengend und fängt Gott sei Dank erst im August an, bis dahin wollte ich aber einen geeigneten Lösungsansatz finden.

Wie würdest denn du das Problem lösen?

Grüße,
Tom

Hallo Tom

Ich wollte lediglich wissen, ob ich mit
dieser Schnittstelle und den ADO/DAO-Methoden (?) mich auf dem
richtigen Weg befinde bzw. ganz falsch liege.

Mit oder ohne ODBC wirst du zum Zeil kommen.

Die 2000er-DB enthält zum Teil schon Daten, allerdings werden
wir die komplett löschen und mit Daten der 2.0-DB füttern -
also wird diese komplett leer sein.

Danke. Dann ergeben sich evtl. noch andere Lösungsmöglichkeiten (z.B. Tabellen importieren und (inkl. der Attribute) umbennen).

Wie würdest denn du das Problem lösen?

Ich schreibe dir die Tage mal ein Mail. Das ist doch ein recht umfangreiches Problem und auch nicht unbedingt von allgemeinem Interesse…

Gruss
Peter

Hallo Tom

Ich schreibe dir die Tage mal ein Mail. Das ist doch ein recht
umfangreiches Problem und auch nicht unbedingt von allgemeinem
Interesse…

Mail ist unterwegs…

Gruss
Peter