PDA

Vollständige Version anzeigen : Export in Textdatei fehlerhaft


ziege
04.08.2001, 14:46
Hi,

beim Export einer Tabelle aus Access 97 in eine Textdatei kommt es immer wieder vor das die Datensätze, die in der Access Tabelle einwandfrei gespeichert sind (zumindest optisch), beim export in eine Textdatei per VBA (transfer Text) durcheinander geworfen werden. Oder es fehlen einige Datensätze kompl.

Die Tabelle hat nur 2 Felder. Im ersten Feld wird nur ein Text gespeichert. Das zweite Feld habe ich angelegt, um über Autowert eine Sortierung sicherzustellen.
Nur helfen tut's auch nicht.
Der Fehler tritt sehr häufig auf aber halt auch nicht immer ??!
Habe das ganze schon auf 4 verschiedenen PC versucht, immer das gleiche.

Max . sind 500 Datensätze zu exportieren.

Wo liegt hier nur das Problem ?

Bin für jeden Hinweis äußerst dankbar.

Ziege

P.S. Hab viel gelesen und probiert.
In der Hilfe zu Access ist die Rede von einer Datei Schema.ini die im zusammenhang mit Text Export zu verwenden ist. Wer kennt sich evtl. aus ?
Außerdem ist ein manuelles kopieren (alle Datensätze markieren, kopieren, Textdatei öffnen, einfügen) der Tabelle ohne Probleme möglich ?!

AWSW
05.08.2001, 17:22
Hallo noch mal Ziege,
also einen Teil findest Du ja im ähnlichen Beitrag von Dir hier wieder: Schema.ini (http://www.ms-office-forum.net/forum/showthread.php?s=&threadid=47027)

Die von Dir genannten Probs habe ich mit meinen Tabellen, wie im anderen Beitrag beschrieben nicht. Bei mir werden bis zu 1500 DS ex- bzw. auch wieder importiert....

Außerdem ist ein manuelles kopieren (alle Datensätze markieren, kopieren, Textdatei öffnen, einfügen) der Tabelle ohne Probleme möglich ?!
Dazu kann ich nur berichten, dass ich meine DS in den TXT - Dateien oft anpasse, da sie dort auch schnell z.B. mal mit Excel zu bearbeiten sind. Ich passe dann ab und zu z.B. mal den Autowert der DS an, um ihn aufsteigend ohne Lücken zu haben, damit dann wieder die Anzahl der DS mit dem Autowert übereinstimmt. Auch Datenänderungen innerhalb der Zellen war bisher unproblematisch, wenn Du Dich zumindest mal an die Textlänge und Format des Feldes hälst, damit beim Importieren noch alles so stimmt http://www.ms-office-forum.de/ubb/wink.gif

Falls Dir das was nützt, dann kann ich Dir eine BeispielDB zusenden, in der meine genaue Export & Importfunktion gut zu erkennen ist. Außerdem enthält diese DB noch einen ganz netten Fortschrittsbalken... Wenn Du diese DB brauchen kannst, dann mail mir eben mal auf die unten genannte Adresse...

Ich hoffe das hilft Dir :D

ziege
05.08.2001, 18:31
Hi AWSW,

vieleicht mache ich ja etwas falsch beim erstellen der DS in der Access Tabelle.

Ich füge einen Text per Abfrage in die Tabelle ein, dabei werden alle DS mittels Leerzeichen auf eine einheitliche Länge gebracht.
Einige DS enthalten zwar Zahlenwerte die ich per Abfrage in die Tabelle einfüge, aber das dürfte nicht die Ursache sein. Denn dann müßte der Fehler immer auftreten.
Dann kopiere ich die gesamte Tabelle mit
DoCmd.TransferText acExportFixed, "import_spezifikation", "tbl_export", "c:\temp\test.txt" in die Textdatei.
Das müßte doch eigentlich richtig sein oder ?

Hast du evtl. sonst noch eine Idee ?

Mit freundlichem Gruß

Ziege

AWSW
05.08.2001, 18:39
Hallo,
aha, dass könnte ja dann der Unterschied sein... Ich verwende keine spezielle eigene Import - Export Spezifikation, sondern einfach nur die durch Trennzeichen, also Semikolons >>> ";"

Musst Du die Dateien so festlegen ??? Ich habe mich zwar noch nicht viel mit den Spezifikationen beschäftigt, da meine verwendete Methode mit den Feldtrennzeichen gut klappt, könnte mir das aber dann gut vorstellen, dass es wohl daran liegt, dass dann die Festlegung nicht ganz passt - oder ???

Ich werfe gleich mal meinen Dateiserver an und suche mal nach dem erwähnten Beispiel - OK ???

Ich hoffe das hilft Dir :D

AWSW
05.08.2001, 19:06
So - nun jetzt aber: ;)

Hallo Ziege,
hier die Datei: Fortschrittsbalken-Setup.exe & Import-Export


also ich exportiere die Tabellen so:

DoCmd.TransferText acExportDelim, "", "Programme und Tools 01 bis 30", "C:\AW-Tool2000\Config\30ProgrammeTools.txt", True, ""

Daraus ergibt sich dann die folgende 30ProgrammeTools.txt: (Jedes Semikolon steht für das oben aufgeführte Feld der Tab.)

"Name 01";"Programm 01";"Name 02";"Programm 02";"Name 03";"Programm 03";"Name 04";"Programm 04";"Name 05";"Programm 05";"Name 06";"Programm 06";"Name 07";"Programm 07";"Name 08";"Programm 08";"Name 09";"Programm 09";"Name 10";"Programm 10";"TName 01";"Tool 01";"TName 02";"Tool 02";"TName 03";"Tool 03";"TName 04";"Tool 04";"TName 05";"Tool 05";"TName 06";"Tool 06";"TName 07";"Tool 07";"TName 08";"Tool 08";"TName 09";"Tool 09";"TName 10";"Tool 10";"TName 11";"Tool 11";"TName 12";"Tool 12";"TName 13";"Tool 13";"TName 14";"Tool 14";"TName 15";"Tool 15";"TName 16";"Tool 16";"TName 17";"Tool 17";"TName 18";"Tool 18";"TName 19";"Tool 19";"TName 20";"Tool 20"
"23";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(Bis "Tool 20" stehen oben die Feldnamen der Tabelle. Ab "23";;;;; stehen dann Zeilenweise die Datensätze...)


Der Import sieht wie folgt aus:

' Öffnen der Tabelle:
DoCmd.OpenTable "Programme und Tools 01 bis 30", acNormal, acEdit
' Inhalt der Tabelle löschen:
DoCmd.GoToRecord acTable, "Programme und Tools 01 bis 30", acFirst
DoCmd.RunCommand acCmdSelectRecord
DoCmd.RunCommand acCmdDeleteRecord
' Import der Daten aus der TXT-Datei:
DoCmd.TransferText acImportDelim, "", "Programme und Tools 01 bis 30", "C:\AW-Tool2000\Config\30ProgrammeTools.txt", True, ""
' Schließen der Tabelle (Mit Funktion "Set Warnings = False" erscheit die Speicherabfrage auch nicht mehr...):
DoCmd.Close acTable, "Programme und Tools 01 bis 30"

Probier es doch mal so - ich hoffe das hilft Dir ;D

ziege
05.08.2001, 19:16
Hallo AWSW,

echt klasse deine prompte Hilfe.

Habe dir gerade mal eine Testtabelle rübergeschickt, vieleicht mal einen Export testen ?

Leider muß ich eine Textdatei mit fester Länge haben, da die Datei als Schnittstellendatei für eine andere Software dient. Und diese verlangt eben feste Satzlängen.

Leider habe ich heute keine Zeit mehr, ich werde mich aber morgen sofort mit deinem Beispiel beschäftigen.

Bis dann.

Ziege

AWSW
05.08.2001, 19:20
Hallo noch mal,
freut mich - muss auch noch weg. Deine Tabelle, ist wie in der grade abgesetzten Mail beschrieben, durch mein super tolles OutlookXP leider weggefiltert worden. Sende Sie mir bitte morgen noch mal. Das System wird gerade neu aufgesetzt...

Schönen Abend noch :D

AWSW
06.08.2001, 12:25
Hallo Ziege,
ich habe eben nur per Handy-SMS gesehen, dass Du mir ne Mail geschickt hast. Ich kann diese leider nicht vor heute Abend lesen, muss noch ein wenig Büroschlaf nachholen ;)

AWSW
06.08.2001, 20:29
Nabend :D

Habe eben einige Male Deine DB getestet und kann bei mir (hochkonvertiert auf Access2000 und auch mal auf AXP) keinen Fehler entdecken. damit passt es dann. Habe nur leider kein A97 mehr hier :(

Kannst Dich ja noch mal melden...

Judith
06.08.2001, 21:55
Hallo Axel!

Ist ein Super bsp. für den Import/Export von Tabellen. Eine Frage:

DoCmd.TransferText acImportDelim, "", "Plusprodukte", "C:\AW-Tool2000\Config\Plusprodukte.txt", True, ""

Da hast du am Ende True. Also in der Textdatei sind die Bezeichnungsfelder ID und Plusproduktliste vorhanden. Wenn man sie auf False setzt gibt Access eine Fehlermeldung aus und schreibt F1 ist nicht vorhanden.

Warum? Ich meine es kann ja vorkommen, dass die Bezeichnungsfelder nicht vorhanden sind.

P.S.: Mit welchem Programm hast du das Setup gemacht? :)

AWSW
07.08.2001, 17:36
@Ziege:
bist Du weiter gekommen ???

@Judith:
Hallo,
lange nichts mehr von Dir gehört - Erstmal Viele Grüße :D

Warum den Wert auf True ??? ... ... was hab ich da wieder gemacht? ... ... Ach ja ;) Das habe ich extra so gesetzt, da es in dieser DB nicht vorkommen soll/können soll, das ein/einige Feld(er) weniger enthalten sind... <<< Will sagen es kommen höchstens noch Felder hinzu, es wird nicht vorkommen, dass es weniger werden... Ich hoffe ich hab Deine Frage richtig verstanden...


Das Setup findest Du unter E-S-Software (http://www.e-s-software.de/). Nennt sich WinInstaller98. Es bietet alle wichtigen Funktionen, des Dir bestimmt bekannte InstallShield, kostet aber nicht mehr als 99,- DM. Für solche Sachen nehme ich das Programm gerne, da es unheimlich schnell und umkompliziert ist...

Ich hoffe das hilft Dir :D

ziege
07.08.2001, 19:16
Hallo,

ich habe (glaube ich) eine der Ursachen gefunden. Und zwar habe ich einfach mal alle AutoWert Felder entfernt. Und siehe da zumindest wurden jetzt alle Datensätze exportiert. Zwar immer noch nicht in der von mir gewünschten Reihenfolge aber immerhin kompl.
Das Problem mit den Datensätzen die nicht in der Reihenfolge gespeichert werden wie es eigentlich nach Ablauf der Funktion sein sollte, konnte mir auch ein zur Hilfe gerufener Profi Access Programmierer (viel teuer) nicht erklären.
Er gab mir aber den Tip den Export mit Hilfe einer Abfrage zu erledigen, die die Daten in der gewünschten Form sortiert.

Und siehe da man glaubt es kaum - es geht.

Die Lösung ist eigentlich ziemlich einfach, wenn man dran denkt.

Meine Datensätze haben jeweils eine fortlaufende Nr. und zusätzlich noch eine Sortierung in der Form a,b,c,

1234 a
1234 b
1234 c
1235 a
1235 b
usw.

Zum Export in die Textdatei verwende ich als erstes den Zahlenwert um alle zusammengehörenden Datesätze zu ordnen als zweites werden die Datensätze dann nach den Buchstaben geordnet. Daraus ergibt sich dann wieder die "natürliche Ordnung".
Das funktioniert aber nur weil ich zufällig Daten exportiere die ein solches Vorgehen erlauben.
Aber egal, Hauptsache tut.

Vielen Dank an awsw für die Unterstützung.
Deine Fortschrittsanzeige ist ein prima Ersatz oder Ergänzung zur "Eieruhr" die eh keiner beachtet.

Gruß
Ziege

AWSW
07.08.2001, 19:28
Hallo Ziege,
freut mich das Du die Nuß geknackt hast ;)

Kannst Du mir noch eine DemoDB mit dem Zähler zukommen lassen, würde ich mir gerne mal ansehen :D

Freut micht das Du die Fortschrittsanzeige gebrauchen kannst. War schnell gestrickt und ist auch für mich als nicht erfahrenen VBAler noch begreifbar ;) und sogar selbst gestrickt :D

Bis denne - hab Dir gerne geholfen & schönen Abend noch :)