Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: Riddler am Oktober 30, 2010, 14:53:30

Titel: Export von mehrern Tabellen in eine Datei?!
Beitrag von: Riddler am Oktober 30, 2010, 14:53:30
Tag zusammen,

in meiner Datenbank (Access 2007) möchte ich gerne ein halbes Dutzend Tabellen komplett exportieren, und zwar in eine einzelne Datei, welches Format ist egal, Hauptsache ich kann aus dieser Datei wieder problemlos den Inhalt der Tabellen importieren.

Ich dachte anfangs an eine Excel-Datei, wo jedes Tabellenblatt den Inhalt einer dieser Tabellen darstellt. Aber leider lässt sich das, meines bisherigen Wissens nach,  so ohne weiteres nicht realisieren.

Vielleicht gibt es ja auch eine Möglichkeit diese Tabelle in eine neue Datenbank zu exportieren, die dann nur aus diesen exportierten Tabellen besteht. Dann wäre das Importieren auch eine einfache Sache.

Zum Schluss soll der ganze Vorgang hinter einer Befehlsschaltfläche (,,Speichern") stecken, nach dessen Betätigen man noch der Datei einen Namen geben kann. Das Importieren soll ebenfalls über ne Schaltfläche ablaufen (,,Öffnen"), wonach man die zu importierende Datei wieder auswählen kann.

Ich hab die Hoffnung noch nicht aufgegeben, dass so was unter Access realisierbar ist. Falls jemand ne zündende Idee hat, wäre ich sehr dankbar.

Mfg
Riddler
Titel: Re: Export von mehrern Tabellen in eine Datei?!
Beitrag von: lumbumba am Oktober 30, 2010, 16:49:49
den Export einzelner Tabellen kannst du mit einer Tabellenerstellungabfrage bewerkstelligen
Code (Export) [Auswählen]
INSERT INTO [Name der Exportierten Tabelle] IN 'Laufwerk:\DeinPath\DeineDateiIndieExportiertwird.mdb' SELECT * FROM [Name der zu exportierenden Tabelle];
Code (import) [Auswählen]
INSERT INTO [Name der ImportiertenTabelle] SELECT * FROM [Name der zu importierenden Tabelle] IN 'Laufwerk:\DeinPath\DeineDateiIndieExportiertwird.mdb'

Dies ist kein wirklicher code, du mußt ihn anpassen.


ZitatIch dachte anfangs an eine Excel-Datei, wo jedes Tabellenblatt den Inhalt einer dieser Tabellen darstellt. Aber leider lässt sich das, meines bisherigen Wissens nach,  so ohne weiteres nicht realisieren.
Doch, nur wirds kein dreizeiler, ist aber machbar mittels ExcelObjecte und ADO glaub ich.


Titel: Re: Export von mehrern Tabellen in eine Datei?!
Beitrag von: database am Oktober 30, 2010, 17:25:50
Hallo,

Nach/Von Excel exportierst/Importierst du am Besten mit Hilfe der DoCmd.TransferSpreadsheet - Methoden
Du kannst auch die TransferDatabase - Methoden für dein Vorhaben einsetzen die Tabellen in eine externe Access-Datenbank zu exportieren und dann aus der selben wieder zu importieren.

Du KANNST aber auch DAO für diese Aufgaben heranziehen.  8)

Für die DAO - Methode habe ich dir eine kleine Beispiel DB angehängt.
Die DB enthält 4  Tabellen und ein Formular mit 2 Button (Export und Import)
Die Ziel- bzw. Quelldatenbank ist im Code fix eingetragen - das kannst du natürlich ändern,
du musst nur den fixen Namen im Klick-Ereignis der Buttons auskommentieren und die Imputbox entkommentieren

Viel Spaß beim Testen

@lumbumba
ZitatDies ist kein wirklicher code, du mußt ihn anpassen.

Deine SQL-Strings sind ja nicht unbedingt falsch, es wird aber ein wenig langweilig, wenn man die Tabellennamen der externen Datei nicht kennt.

Grüße
Peter

p.s. Wenn du einen Export durchführst und danach die Tabellen wieder importieren willst und dazu die Originaltabellen löschst, MUSST du die
Datenbank nach dem Löschen der Tabellen komprimieren, sonst gibts einen Fehler.
Ich habe im Importcode diesen Fehler NICHT abgefangen (es wird nicht auf Tabellennamen geprüft, die mit '~TMP..' beginnen (das sind die Namen der gelöschten Tabellen vor Komprimierung)

[Anhang gelöscht durch Administrator]
Titel: Re: Export von mehrern Tabellen in eine Datei?!
Beitrag von: lumbumba am Oktober 30, 2010, 19:09:44
Zitat von: databaseDeine SQL-Strings sind ja nicht unbedingt falsch, es wird aber ein wenig langweilig, wenn man die Tabellennamen der externen Datei nicht kennt.
Na Langweilig is ja übertrieben, es sollte nur aufzeigen wie man ggf mit einer Methode tabellen exortieren/importieren kann. Wie jetzt die SQL-Strings letztlich zusammengesetzt werden wäre ggf für den Threadsteller auch wichtig gewesen, aba ich hab kein Acc2007.

ZitatDu KANNST aber auch DAO für diese Aufgaben heranziehen.
Da du hier speziell DAO erwähnst meine Fragen: Ex-/Importiert deine Bsp-DB nach/Von Excel? Und wenn ja, könntest du diese ggf auf die 2003er herunterkonvertieren? Wie schon erwähnt hab ich kein 2007er, und daher kann ich deine DB nicht öffnen.  



Gruss
Daniel
Titel: Re: Export von mehrern Tabellen in eine Datei?!
Beitrag von: database am Oktober 30, 2010, 20:35:43
Hi,

war nicht übel oder schlecht gemeint Daniel ...

Zitat... Ex-/Importiert deine Bsp-DB nach/Von Excel? ...
In der Version für 2007 nicht aber ich hab sie für dich konvertiert in die 2003-er Version und Excel-Export und Excel-Import dazugebastelt.

Vielleicht kannst was anfangen damit!?

Grüße
Peter

[Anhang gelöscht durch Administrator]
Titel: Re: Export von mehrern Tabellen in eine Datei?!
Beitrag von: lumbumba am Oktober 30, 2010, 22:36:21
Hiho Peter

Zitatwar nicht übel oder schlecht gemeint...
Keine Panik, hatte ich so auch nicht aufgefasst.

Vielen dank für deine Arbeit, DoCmd.TransferSpreadsheet acExport, acSpreadsheetTypeExcel9, td.Name, pathAndFile, -1 kannte ich gar nicht. Cool.
Ich entschuldige mich das ich dir Mehrarbeit aufgedrückt habe, ich in meinem Kopf nen anderen Kontext hatte als du und ich meinen nicht klar artikuliert hatte. Kurz angerissen, weil's sonst den Rahmen des Threads sprengt: Ich hatte mal in einem anderen Basic-Dialekt ein Projekt, bei dem ich Excel-xls als backends verwendet habe. Diese wurden per Ado mit OLEDB und Excel-Treiber angesprochen. Dies lief soweit auch teilweise, nur hab ich ums verrecken nicht gebacken bekommen, mit Ado neue Spalten in die Tabellen zu bekommen. Da mußte ich dann immer auf die Excelinternes ausweichen.
Daher dachte ich als du sagtest das ginge auch mit dao, daß du Excel sozusagen als Backend mit Dao verwendest.

Titel: Re: Export von mehrern Tabellen in eine Datei?!
Beitrag von: Riddler am Oktober 30, 2010, 23:47:00
Vielen Dank Leute,

diese Beispieldatenbank hat mir schon sehr weiter geholfen.

Wenn ich jetzt noch wüsste wie ich es schaffe, dass beim Drücken der Exportschaltfläche sich ein Dialog öffnet, in dem ich Name und Speicherort bestimmen kann, dann wäre ich wunschlos glücklich. Leider hab ich noch keine nennenswerte Kenntnisse im Code schreiben. Falls es nicht geht, wäre es auch nicht schlimm, diese Lösung ist auch so ne feine Sache.

P.S.: Ich konnte bislang keinen Fehler beim Importieren bemerken. Wo drin äußert sich denn dieser Fehler? Werden einzelne Datensätze fehlerhaft übernommen oder entsteht lediglich ein Laufzeitfehler und die Prozedur wird beendet?

Mfg
Riddler
Titel: Re: Export von mehrern Tabellen in eine Datei?!
Beitrag von: lumbumba am Oktober 31, 2010, 00:36:47
Das hat database schon berücktsichtigt und ist praktisch schon im Code.
Ändere die Zeilen
Code (Org-Zeile) [Auswählen]
pathAndFile = "E:\Export.mdb" 'InputBox("Pfad und Dateinamen angeben:", "Tabellen Exportieren")
in
Code (geänderte Zeile) [Auswählen]
pathAndFile = InputBox("Pfad und Dateinamen angeben:", "Tabellen Exportieren")
Titel: Re: Export von mehrern Tabellen in eine Datei?!
Beitrag von: database am Oktober 31, 2010, 07:28:14
Hallo Riddler,

ZitatIch konnte bislang keinen Fehler beim Importieren bemerken ...

Es kann sein, dass du einen Fehler angezeigt bekommst, wenn du exportierst, danach die Originaltabellen löschst und gleich wieder Importierst ...
Also im Probebetrieb mal wüst hin und her spielst ohne die Dateien mal zu schließen oder zu komprimieren.
Wenn so was in der Form auftritt, muss eine entsprechende Fehlerroutine eingebaut werden, dafür war vorhin einfach keine Zeit.

@lumbumba
Excel als Backend für ein Access Frontend?
Das ist ja fast als würde man in eine Ferrari - Karosserie einen VW-Käfer - Motor einbauen.  :o

ZitatDies lief soweit auch teilweise
Naja ... siehe oben ...  :D

Zitatmit Ado neue Spalten in die Tabellen ...
Ist m.E. gar nicht möglich ohne die Excel xxx Object Library zu bemühen.

Excel im Zusammenhang mit Access einzusetzen macht IMHO auch nur dann wirklich Sinn, wenn komplexe Berechnungen im finanztechnischen Umfeld
anfallen oder bei statistischen Aufgabestellungen wo Excel dann eben seine volle Stärke zeigen kann. Hier aber sicher nicht als Backend
sondern eben wie im Beispiel angerissen als Zielformat eines Datenexports.

Ein Import von Exceldaten nach Access kommt des Öfteren vor - speziell wenn 'alte' Datensammlungen auf Datenbanken umgemünzt werden sollen.
Ganz ohne Nacharbeit wird aber auch das nicht ordentlich funktionieren (Schlüsselspalten etc.)

Grüße

Peter
Titel: Re: Export von mehrern Tabellen in eine Datei?!
Beitrag von: lumbumba am Oktober 31, 2010, 13:30:58
ZitatDas ist ja fast als würde man in eine Ferrari - Karosserie einen VW-Käfer - Motor einbauen.
:o
Na du bist ja gemein zu Excel, es als Käfermotor zu bezeichnen. Machen wir nen Porschemotor draus, das past eher, auch Fauxpas-technisch.

ZitatIst m.E. gar nicht möglich...
Siehste, wieda wat jelernt. ich dachte ich hab den Wald vor lauter Bäumen nicht gesehen, und was übersehen.

Ist es wie es war, damals wurde das so gewollt, weil eben in diesen Excelmaps schon Daten und Code vorhanden waren.
Meine Sicht der Dinge ist, das es dem Frontend egal sein sollte welche Backends er ansteuert, ein Tabelle ist ne Tabelle, das Format ist egal, ob nun mdb's, xls, csv etc, letztendlich sind ja die Datenbanktreiber für alles zuständig, und wenn die Rahmenbedingungen es vorgeben wird's gemacht. Das nun der Exceltreiber nicht die volle Bandbreite bringt, war zwar nervig, aber nicht hinderlich.
Titel: Re: Export von mehrern Tabellen in eine Datei?!
Beitrag von: database am Oktober 31, 2010, 14:08:15
Hallo,

meinetwegen auch ein Ferrarimotor, der auf 2 1/2 Zylindern hustet, es muss nur fürchterlich genug sein - so gesehen war der Käfermotor mit seiner Zuverlässigkeit eh ein Fauxpas...  ;)

ZitatIst es wie es war, damals wurde das so gewollt, weil eben in diesen Excelmaps schon Daten und Code vorhanden waren.
Ich kenne das - wenn die Vorgaben dementsprechend sind ... Naja, von Datenimporten hat man in der Steinzeit auch noch nichts gewußt...  :-\

ZitatMeine Sicht der Dinge ist, das es dem Frontend egal sein sollte welche Backends er ansteuert, ein Tabelle ist ne Tabelle, das Format ist egal, ...
Und hier verabschieden sich dann etwaige Gemeinsamkeiten im Umfeld der Datenbankkenntnisse in Blitzeseile!
Genau das ist der Knackpunkt - ich kann per Programmiersprache so ziemlich alles so verbiegen und zerdröseln, dass am Ende ein richtiges Ergebnis zu lesen sein wird.
Was ich aber mit Sicherheit nicht kann ist es Excel beizubringen mit Primäschlüsseln und Fremdschlüsseln in Datenbankfunktionalität zu arbeiten oder gar die referenzielle Integrität zu wahren.
Da lernt eher ein Rindvieh Radfahren - glaube mir
Eine Exceltabelle ist und bleibt was es ist - das Worksheet einer Tabellenkalkulation und NIEMALS auch nur annähernd die Tabelle einer Datenbank!

Alles was sich sonst um dieses Ding (Excel) an Weisheiten und Wunschträume in Bezug auf Datenbanken windet ist kurz gesagt -
und ich darf an der Stelle MzKlMu dankend für diesen tollen Ausdruck zitieren - G E D Ö N S

Langer Rede kurzer Sinn, wenn du ein Frontend hast, welches auf Excel als Backend zugreift ist das in meinen Augen bestenfalls ein Spielprojekt zu
Veranschaulichungszwecken um nachzuweisen dass es so nichts wird und hat mit einer Datenbank soviel gemeinsam wie ein Eskimo mit einer Badehose (ohne Eskimos und Badehosen jetz zu diskreminieren)

Grüße

Peter
Titel: Re: Export von mehrern Tabellen in eine Datei?!
Beitrag von: lumbumba am Oktober 31, 2010, 15:46:56
Zitatmeinetwegen auch ein Ferrarimotor, der auf 2 1/2 Zylindern hustet, es muss nur fürchterlich genug sein - so gesehen war der Käfermotor mit seiner Zuverlässigkeit eh ein Fauxpas...
lol, ich hoff wir ham jetzt hier keine Ferraristis oda Alfonsfans hier.


ZitatWas ich aber mit Sicherheit nicht kann ist es Excel beizubringen mit Primäschlüsseln und Fremdschlüsseln in
Datenbankfunktionalität zu arbeiten oder gar die referenzielle Integrität zu wahren.
Da lernt eher ein Rindvieh Radfahren - glaube mir
Das glaub ich dir, keine Panik. Aber genau diese Funktionen (Primäschlüssel, Fremsschlüssel, referenzielle Integrität) sind was sie sind, Funktionen, die "per Programmiersprache so ziemlich verbogen und zerdröselt worden sind, dass am Ende ein richtiges Ergebnis zu lesen sein wird."

und bevor wir uns jetzt missverstehen, es ging nicht darum Excel, csv etc als DB zu interpretieren oder zu verwenden, sondern nur als Speicherort.
Ich hab noch nie ne db komplett auf Basis von excel gebaut, es ging damals nur darum einen kleinen Teil der täglichen Datenerfassung in verschiedenen exceltabs zu erfassen, was auch DB-technisch gesehen nicht falsch war weil oben genannten Bedinungen/Funktionen für diesen Teil der Daten nicht benötigt wurden. Ich glaube für dich ist das dann kein Backend sondern ein DatenImportExport, bin mir aber nicht sicher.
Jetzt aber nicht falsch verstehen aber man muß die Verwendung von ExcelTabs in eine DB nicht gleich als grossangelegten Angriff auf die Integrität der datenbanktechnik bewerten, und ein Projekt was dies tut als Spielprojekt herabzusetzen.  

Zitat...soviel gemeinsam wie ein Eskimo mit einer Badehose...
Sach dat nicht. sind hardgesottene Leute, und bei der heutigen Erderwärmung sind -4°C Sommerwetter, da gehen die bestimmt baden.

ich mach mal hier schluss mit dieser diskussion, weil sonst schimpft DF6GL wieder. Ich glaub der hält uns soundso schon für zwei labertaschen.  :D

Gruss
Daniel
Titel: Re: Export von mehrern Tabellen in eine Datei?!
Beitrag von: database am November 01, 2010, 08:09:54
Hallo Daniel,

da gehts nicht um gelaber oder Labertaschen da gehts um Begriffdefinitionen!

Zitat...aber man muß die Verwendung von ExcelTabs in eine DB nicht...
Ich verteufle Excel sicher nicht als das was es ist.
Ich denke aber dass es schon ganz wichtig ist, dass man weiß wovon man spricht sonst passiert es allzuschnell, dass schnell hingeworfene Begrifflichkeiten in einen vollkommen falschen Zusammenhang gesehen werden ... siehe da...

ZitatIch glaube für dich ist das dann kein Backend sondern ein DatenImportExport, bin mir aber nicht sicher.

Dessen kannst du dir GANZ sicher sein denn ein Speicherort für exportierte Daten ist NICHT NUR FÜR MICH  was VÖLLIG ANDERES  anderes als ein Backend!

Sollte das für dich KEINEN Unterschied machen kann ich dir nur empfehlen dich mit diesen Dingen vertraut zu machen sonst kommt es noch oft zu Missverständnissen.

EOF
Peter