Zahlen mit führenden Nullen in Textdatei exportieren

29/12/2009 - 12:41 von Bjoern | Report spam
Moin!

Folgendes Problem:
Ich habe eine Tabelle, in der eine Spalte Textfelder enthàlt, die nur aus
Zahlen bestehen.
Also z.B. "12345678"
Da die Feldlànge immer 8-stellig sein soll, sind kürzere Eintràge einfach
mit Nullen aufgefüllt.

Ein Auszug der Spalte könnte also so aussehen:
00123456
12345678
00012345
01234567
...

Die führenden Nullen werden für die Weiterverarbeitung unbedingt benötigt.
Wie gesagt, das Format der Spalte ist in der Tabelle als Text definiert, die
Nullen sind also "wirklich da".

So, diese Tabelle exportiere ich nun als txt-Datei, dabei gehen aber leider
die führenden nullen verloren.

Den Export der Datei mache ich mit VBA, und zwar so:

DoCmd.TransferText acExportDelim, Spezi, Tabelle, Pfad & Datei, True, ""

Die Variablen werden im Code durch Auslesen von Formularfeldern gesetzt.
Die Spezifikation beinhaltet folgende Einstellungen:

Trennzeichen: TAB
Textbegrenzugn: kein
Sprache: Deutsch
Codepage: Unicode (UTF-8)
Der Rest ist wohl egal, denn die Inhalte der anderen Spalten enthalten keine
Werte, die davon berührt wàren

Ich habe mit den Einstellungen herumprobiert, nix zu machen, die führenden
Nullen werden in der resultierenden Textdatei abgeschnitten.

So, dann habe ich mal einfach den Export ohne Spezifikation durchgeführt,
und siehe da, die Nullen sind da. Allerdings dann standardmàßig mit
Textbegrenzern und falschen Trennzeichen. Ich habe dann eine Spezifikation
neu gebaut, und Schritt für Schritt alle Einstellungen nach obigem Muster
eingestellt.
Und was soll ich sagen? Ich hatte alle Einstellungen übernommen, und die
führenden Nullen sind trotzdem da!!
Wie kann das angehen? Ich habe eine neue Spezifikation gebaut, die genauso
aussieht wie die alte, und trotzdem ist das Ergebnis unterschiedlich!

Auch wenn ich jetzt probeweise die alte Spezifikation benutze, werden die
Nullen wieder abgeschnitten.
=> zwei gleiche Spezifikationen => unterschiedliches Ergebnis!
ich kann nur sagen: MAGIC!!!

Das Problem ist zwar gelöst, aber es würde mich echt interessieren, wie
sowas angehen kann.

Vieleicht weiß ja hier jemand Rat.

besten Dank und viele Grüße,

Björn
 

Lesen sie die antworten

#1 Peter Doering
30/12/2009 - 04:31 | Warnen spam
Hallo,

Bjoern wrote:

Ich habe eine Tabelle, in der eine Spalte Textfelder enthàlt, die nur aus
Zahlen bestehen.
Also z.B. "12345678"
Da die Feldlànge immer 8-stellig sein soll, sind kürzere Eintràge einfach
mit Nullen aufgefüllt.

Ein Auszug der Spalte könnte also so aussehen:
00123456
12345678
00012345
01234567
...

Die führenden Nullen werden für die Weiterverarbeitung unbedingt benötigt.
Wie gesagt, das Format der Spalte ist in der Tabelle als Text definiert, die
Nullen sind also "wirklich da".

So, diese Tabelle exportiere ich nun als txt-Datei, dabei gehen aber leider
die führenden nullen verloren.

Den Export der Datei mache ich mit VBA, und zwar so:

DoCmd.TransferText acExportDelim, Spezi, Tabelle, Pfad & Datei, True, ""

Die Variablen werden im Code durch Auslesen von Formularfeldern gesetzt.
Die Spezifikation beinhaltet folgende Einstellungen:

Trennzeichen: TAB
Textbegrenzugn: kein
Sprache: Deutsch
Codepage: Unicode (UTF-8)
Der Rest ist wohl egal, denn die Inhalte der anderen Spalten enthalten keine
Werte, die davon berührt wàren

Ich habe mit den Einstellungen herumprobiert, nix zu machen, die führenden
Nullen werden in der resultierenden Textdatei abgeschnitten.

So, dann habe ich mal einfach den Export ohne Spezifikation durchgeführt,
und siehe da, die Nullen sind da. Allerdings dann standardmàßig mit
Textbegrenzern und falschen Trennzeichen. Ich habe dann eine Spezifikation
neu gebaut, und Schritt für Schritt alle Einstellungen nach obigem Muster
eingestellt.
Und was soll ich sagen? Ich hatte alle Einstellungen übernommen, und die
führenden Nullen sind trotzdem da!!
Wie kann das angehen? Ich habe eine neue Spezifikation gebaut, die genauso
aussieht wie die alte, und trotzdem ist das Ergebnis unterschiedlich!

Auch wenn ich jetzt probeweise die alte Spezifikation benutze, werden die
Nullen wieder abgeschnitten.
=> zwei gleiche Spezifikationen => unterschiedliches Ergebnis!
ich kann nur sagen: MAGIC!!!

Das Problem ist zwar gelöst, aber es würde mich echt interessieren, wie
sowas angehen kann.



Vergleiche mal die Eintraege der beiden Spezifikationen auf Tabellenebene.
Dazu musst du die Systemdateien einblenden (Extras - Optionen - Ansicht)
und die Tabellen MSysIMEXSpecs und MSysIMEXColumns am besten per Abfrage
auswerten. SpecID ist der gemeinsame Schluessel.

Gruss - Peter

Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Ähnliche fragen