Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Zeichen aus txt-Datei auslesen

Begonnen von liederstern, August 17, 2010, 08:26:46

⏪ vorheriges - nächstes ⏩

liederstern

Hallo zusammen,

wir bekommen demnächst meherere tausend txt-Dateien übermittelt.
Bisher lese ich nur einige Informationen aus den Dateinamen aus - das klappt auch bereits.
Aber bevor diese fertige Funktion gestartet werden kann, soll das jeweils dritte Feld der txt-Datei ausgelesen werden und auf den Inhalt "2010" überprüft werden.
Aber mir fehlt leider der richtige Ansatz dafür, einfach nur den Textinhalt zu vergleichen, ohne die Datei zu importieren.
Würde mir jemand einen Tipp geben?
Danke Euch!
Viele Grüße,
Nicole

MzKlMu

Hallo,
dazu müsste man wissen, wie die txt Datei aufgebaut ist.
Wie lauten die Dateinamen, lässt sich da eine Regel zum automatischen ermitteln der Dateinamen ableiten?
Wie werden die Felder in der txt getrennt?
Gruß Klaus

Sulu

Hallo liederstern,

mir will gerade auch keine Möglichkeit einfallen Dateiinhalte zu vergleichen ohne zu importieren. Meines Wissen nach ist dies auch nicht möglich, da Access dann keine Daten zur Verfügung hat.

Allerdings könntest du mit einem externen Programm (meinetwegen in C# (Programmierumgebung etc. sind kostenlos)) die Abfrage programmieren und dann Fehleinträge im Dateinamen kennzeichnen.

LG
Sulu

liederstern

Hallo MzKlMu,

die txt-Dateien sind jeweils unterschiedlich aufgebaut (5 verschiedene Satzarten). Jeder der 1000 Lieferanten schickt uns 5 Dateien.
Je nach Datenlieferant enthalten die Dateien auch unterschiedliche Trennzeichen. Verallgemeinern können wir das nicht.
Habe als Beipiel mal 2 Fotos beigefügt.
Jeweils das dritte Feld enthält die zu überprüfende Jahreszahl "2010".

Satzart SA


Satzart FA
Viele Grüße,
Nicole

MzKlMu

Hallo,
es wäre schon möglich gezielt auf ein Feld zuzugreifen, ohne zu importieren, auch von Access.
Kann es innerhalb einer Datei unterschiedliche Jahre geben, oder genügt es nur den ersten Datensatz auszuwerten.
ZitatJe nach Datenlieferant enthalten die Dateien auch unterschiedliche Trennzeichen. Verallgemeinern können wir das nicht.
Das muss aber verallgemeinert werden, sonst geht es nicht.
Hat wenigstens jeder Lieferant dann immer das gleiche Format?
Und was ist mit meiner anderen Frage:
ZitatWie lauten die Dateinamen, lässt sich da eine Regel zum automatischen ermitteln der Dateinamen ableiten?
Gruß Klaus

Wodka43

Hi Nicole,

Also ich würde dir für den Text-Vergleich das Scripting.FileSystemObject empfehlen. Damit kann man leicht in/mit txt-Dateien arbeiten ohne sie real importiert zu haben. Vorallem auch Zeilenweise durchgehen. (einfach mal nach Googlen)

Dann brauchen wir nur noch ne Fallunterscheidung für die unterschiedlichen Satzarten. Also dazu Klaus Fragen beantworten  :)

mfg
Leo
"Nimm das Leben nicht zu ernst, du kommst da eh nicht lebend raus"
;)

liederstern

#6
Hallo MzKlMu,

innerhalb einer Datei kommt immer nur ein Jahr vor, so dass hier das Auslesen der ersten Zeile ausreicht (so war zumindest meine Planung).
Ob die Daten jeweils eines Lieferanten das gleiche Format haben, kann ich nicht sagen. Vermutlich ja, aber wissen tue ich es nicht. Da die Dateien auch möglicherweise nicht gleichzeitig geliefert werden, werden sie getrennt voneinander weiterverarbeitet. Eine Bezugnahme auf die anderen Dateien des gleichen Lieferanten sollte schon deshalb nicht erfolgen.

Die Dateinamen haben immer das Schema #######_xx_########-####.txt.
Also zum Beispiel 0700000_SA_20100817-1130.txt (0700000=Lieferantennummer, SA=Satzart, 20100817=Datum, 1130=Uhrzeit).



Wäre es sonst vielleicht möglich zu prüfen, ob in den z.B. ersten 20 Zeichen "2010" vorkommt?

Danke Euch schon mal!
Viele Grüße,
Nicole

MzKlMu

Hallo,
der nachfolgende Codeschnippsel liest die 1.Zeile eine Txt Datei ein und prüft ob in den ersten 20 zeichen 2010 vorhanden ist.

Dim strPruefen As String
        Open PfadUnddateiName For Input As #1
        Line Input #1, strPruefen
        If InStr(1, Left(strPruefen, 20), 2010) > 0 Then
           'Importieren
        End If
        Close #1

Gruß Klaus

liederstern

#8
Hallo MzKlMu,
danke für Deine Mühe.
Ich werde mich daran gleich mal versuchen  :)

So, habe es endlich ausprobieren können. Funkioniert einwandfrei! vielen DANK!
Viele Grüße,
Nicole