Import von Tabellen über ODBC nach MS Access

Hallo zusammen,

ich stehe vor der Aufgabe, aus einer („fernen“) Datenbank mittels ODBC-Schnittstelle diverse Tabellen zu importieren.
Meine „unelegante“ Lösung bisher:

  • Makro erstellen mit Befehl „TransferDatenbank“.
    Bisher ist jede Tabelle fest im Makro angegeben, obwohl sich die Inhalte nur in den Angaben „Datenbankname“ (und hier nur im Tabellennamen) und „Quelle“ unterscheiden.

Da die Tabellen sich nur in einer Nummer unterscheiden („FLST44BUCHG“, „FLST45BUCHG“ u.ä.) würde ich lieber vorab „44“ bzw. „45“ abfragen und dann die Tabelle mit immer den gleichen Prozeduren laden.

Weiß jemand eine Lösung?!
Danke!
Ogni

Hallo Ogni,

ich stehe vor der Aufgabe, aus einer („fernen“) Datenbank
mittels ODBC-Schnittstelle diverse Tabellen zu importieren.

importieren ist eine einmalige Aktion!? Wo ist das Problem?

Meine „unelegante“ Lösung bisher:

  • Makro erstellen mit Befehl „TransferDatenbank“.

das geht auch per VBA mit der Funktion DOCMD.

Da die Tabellen sich nur in einer Nummer unterscheiden
(„FLST44BUCHG“, „FLST45BUCHG“ u.ä.) würde ich lieber vorab
„44“ bzw. „45“ abfragen und dann die Tabelle mit immer den
gleichen Prozeduren laden.

  • du kannst dir auch zwei Makros anlegen!
  • Du kannst auch eine Inputbox erstellen und die Antwort als Variable in dein Makro übernehmen.
  • Du kannst auch ein Formular mit Eingabefeld erstellen und die Antwort als Variable in dein Makro übernehmen.

„FLST“ & INPUT & „BUCHG“

Weiß jemand eine Lösung?!

wenn du die Tabellen immer wieder „importieren“ mußt, solltest du dir mal überlegen die Tabellen zu verknüpfen!
Datei / Externe Daten …

Danke!
Ogni

Hallo Netwolf,
vielen Dank für Deine Antwort …

Hallo Ogni,

ich stehe vor der Aufgabe, aus einer („fernen“) Datenbank
mittels ODBC-Schnittstelle diverse Tabellen zu importieren.

importieren ist eine einmalige Aktion!? Wo ist das Problem?

Ich muss etwa wöchentlich etliche (sich verändernde) Tabellen importieren.

Meine „unelegante“ Lösung bisher:

  • Makro erstellen mit Befehl „TransferDatenbank“.

das geht auch per VBA mit der Funktion DOCMD.

Das wäre wahrscheinlich besser, ich weiß jedoch nicht, wie das geht …

Da die Tabellen sich nur in einer Nummer unterscheiden
(„FLST44BUCHG“, „FLST45BUCHG“ u.ä.) würde ich lieber vorab
„44“ bzw. „45“ abfragen und dann die Tabelle mit immer den
gleichen Prozeduren laden.

  • du kannst dir auch zwei Makros anlegen!

Habe ich auch getan, es sind übrigens mindestens 8 Tabellen und damit 8 Makros. Und alle Tabellen gibt es mit der Nummerierung 10 bis 99, nicht nur 44 und 45, das waren nur Beispiele. Damit ergibt sich also das Problem, dass es insgesamt -zig Tabellen sind, die ich nicht alle zu Fuß (je ein Makro) importieren will. Es sollten schlimmstenfalls 8 Makros sein, bei denen ich dann mit einer Variable arbeite, die mir den Zugriff auf die 44er, 45er oder sonsteine Nr ermöglicht.

  • Du kannst auch eine Inputbox erstellen und die Antwort als
    Variable in dein Makro übernehmen.

Da kommen wir der Sache schon näher. Wie geht das?!

  • Du kannst auch ein Formular mit Eingabefeld erstellen und
    die Antwort als Variable in dein Makro übernehmen.
    „FLST“ & INPUT & „BUCHG“

Schluckt Access denn Variablen in den Makro-Angaben zum Tabellennamen und zum ODBC-Verbindungsstring?

Weiß jemand eine Lösung?!

wenn du die Tabellen immer wieder „importieren“ mußt, solltest
du dir mal überlegen die Tabellen zu verknüpfen!
Datei / Externe Daten …

Habe ich natürlich auch schon probiert, das ist jedoch ein Performanceproblem, denn die Verbindung zum Server ist nicht immer gut. Außerdem sind die Tabellen sehr groß - einige bis zu 500000 Datensätzen.

Danke!
Ogni

Ich hoffe ich habe mich verständlich machen können …?
Gruß
Ogni

Hallo Ogni,

hier mal ein Anmerkung/Loesungsatz der ewt. dein Problem loesen koennte.

Wenn ich dich richtig verstanden habe, dann sind es nicht immer die gleichen Tabellen, die in einem Importlauf geladen werden sollen.
Wenn dem so ist,dann hatte ich ein aehnliches Problem vor einiger Zeit und meine Loesung sah folgendermassen aus:

  1. Ich habe fuer alle in Frage kommenden Tabellen eine Verknuefung in Access angelegt.
  2. Ich habe ein Formular erstellt, das ein multiselect Listcontrol(2 Spalten) hatte, das ich mit den Namen der Verknuepfungen (ODBC-Tabellennamen) und dem „ConnectionStrings“ gefuellt habe. Dies geht ueber das iterieren ueber die TableDefs. Und dann war im Formular natuerlich einen Button zum Starten des Imports.
  3. Nach Klick auf den Button bin ich ueber die Ausgeaehlten Elemente des Liste und habe dann die 2.Spalte der Liste(connectionString) beim DoCmd.Transferdatabase als Source-Parameter angegeben.

Somit hatte ich eine komfotable Moeglichkeit meine Importtabellen auszuwaehlen und nur eine simple Schleife fuer in dem der Transferdatbase Befehl eingebettet ist.

Hope this helps
Peter

Hallo Ogni,

Ich muss etwa wöchentlich etliche (sich verändernde) Tabellen
importieren.

d.h. du importierst nur die Änderungen, nicht die komplette Tabelle?

das geht auch per VBA mit der Funktion DOCMD.

Das wäre wahrscheinlich besser, ich weiß jedoch nicht, wie das
geht …

wenn du den Makroeditor offen hast, klicke auf Datei / Speichern unter / wähle dort als Modul speichern, und schon hast du aus dem Makro eine VBA Prozedur „programmiert“.

Habe ich auch getan, es sind übrigens mindestens 8 Tabellen
und damit 8 Makros. Und alle Tabellen gibt es mit der
Nummerierung 10 bis 99, nicht nur 44 und 45, das waren nur
Beispiele.

Ok, VBA ermöglicht dir da wensentlich mehr Möglichkeiten.
Dort kannst du z.B. einen Zähler programmieren, der die Zahlen entsprechnde hochzählt und dann die Tabelle läd.

  • Du kannst auch eine Inputbox erstellen und die Antwort als
    Variable in dein Makro übernehmen.

Da kommen wir der Sache schon näher. Wie geht das?!

F1, suchen nach INPUTBOX, lesen :smile:
(es würde hier den Rahmen sprengen, alles zu posten)

  • Du kannst auch ein Formular mit Eingabefeld erstellen und
    die Antwort als Variable in dein Makro übernehmen.
    „FLST“ & INPUT & „BUCHG“

Schluckt Access denn Variablen in den Makro-Angaben zum
Tabellennamen und zum ODBC-Verbindungsstring?

hmmm, wie sollte man denn sonnst dynamische Dinge regeln? DAS ist ja der Vorteil des Ganzen.

Habe ich natürlich auch schon probiert, das ist jedoch ein
Performanceproblem, denn die Verbindung zum Server ist nicht
immer gut.

das liegt dann aber wohl nicht am Access :smile:
Sprich mal mit deinem Admin…

Außerdem sind die Tabellen sehr groß - einige bis
zu 500000 Datensätzen.

und du kopierst/importierst jedes mal die komplette Tabelle, und nicht nur die Änderungen? Wahnsinn !!

Erstelle / lass dir einen View auf dem SQL-Server erstellen, wo nur die Änderungen berücksichtigt sind und importiere nur diese!

Und ab morgen liest du dich in VBA ein, denn damit geht so einiges einfacher! :smile:

Grüße aus Essen
Wolfgang