hanschi
Goto Top

!-! Closed by Mod!-! Textdatei

Hallo Forum,
bin neu und kein Profi!

Folgendes Problem:
Habe eine Textdatei auf Diskette. Ein Satz beginnt immer mit C00000 (5x Null). Alle folgenden Informationen gehören zu disem Satz. Wenn wieder String mit C00000 beginnt, dann vorhergehenden Satz ausgeben und neuen aufbauen, bis wieder Wechsel durch String C00000.
Wie kann ich das machen? Ich möchte eine feste Satzlänge von 320 Byte ausgeben. In einem zweiten Schritt möchte ich dann nur bestimmte Werte ausgeben, wenn Feldinhalt ist xxxx.

Ist das lösbar? Wenn Testdaten nötig sind, kann ich diese gerne liefern. Für Vorschläge wäre ich sehr dankbar!

Grüße aus München
Hanschi

Content-ID: 102208

Url: https://administrator.de/contentid/102208

Ausgedruckt am: 26.11.2024 um 03:11 Uhr

bastla
bastla 19.11.2008 um 16:42:48 Uhr
Goto Top
Hallo Hanschi und willkommen im Forum!

Etwas genauer solltest Du vielleicht doch beschreiben,
  • wie die Datei aussieht (ob zB Zeilenumbrüche enthalten sind) - dazu am besten 3 Sätze posten (wenn Du diese zwischen Tags < code type="plain"> und < /code> - jeweils ohne das erste Leerzeichen - platzierst, werden sie unverändert dargestellt - siehe am Ende von ).
  • wohin die "fertigen" Sätze ausgegeben werden sollen.
  • wie der zweite Schritt genau aussehen soll (da er sich vermutlich mit dem ersten Schritt gut kombinieren lässt).

Grüße
bastla
Ricci-1969
Ricci-1969 19.11.2008 um 16:50:38 Uhr
Goto Top
Hm,

ich bastel mir da kurz ein PHP-Script, kopier die Sachen auf ein webserver, lass das script laufen lad mir das Ergebnis runter. Zugegeben nicht die Musterlösung, aber funktioniert.

Aber wie "bastla" schon meinte, ein paar Zeilen posten wäre nicht schlecht...
bastla
bastla 19.11.2008 um 17:02:16 Uhr
Goto Top
@Ricci-1969
Mit VBScript brauchst Du noch nicht einmal den Webserver, zB für folgende Minimallösung:
Set fso = CreateObject("Scripting.FileSystemObject")  
Saetze = Split(fso.OpenTextFile(WScript.Arguments(0)).ReadAll, "C00000")  
For i = 0 To UBound(Saetze)
    WScript.Echo "C00000" & Saetze(i)  
Next
Das Ganze mit
cscript //nologo C:\Scripts\Aufteilen.vbs "D:\Die Textdatei.txt"
gestartet würde die einzelnen Sätze im CMD-Fenster ausgeben. Analog dazu ließe sich das auch in VBA einsetzen um (wir sind ja hier im Bereich "Excel") die Sätze in eine Excel-Tabelle zu schreiben.

Grüße
bastla
Hanschi
Hanschi 19.11.2008 um 17:02:49 Uhr
Goto Top
Hallo bastla,
so sehen die Daten aus (für mich ein endloser String). Es soll dann mit verschiedenen Felder eine Excel-Tabelle erzeugt werden.
[Edit Biber] Hier standen ECHT-Daten ------- gelösht --------[/Edit]
Grüße
Hanschi
bastla
bastla 19.11.2008 um 17:06:40 Uhr
Goto Top
Hallo Hanschi!

Wie werden die einzelnen Felder festgelegt? Da Du eine fixe Satzlänge genannt hast, werden vermutlich die Felder gleichfalls eine fixe Länge haben ...

Was soll übrigens mit zB "10216" vor dem ersten Satz passieren?

Grüße
bastla

P.S.: So schwer wäre die Formatierung aber eigentlich auch nicht gewesen ...
Hanschi
Hanschi 19.11.2008 um 17:12:25 Uhr
Goto Top
Hallo bastla,
die Felder haben eine bestimmte Feldlänge, nur bekomme ich die Definition und Satzaufbau erst morgen übermittelt. Wie funktioniert so ein VBScript? Wie muß ich das machen? Ich bin da nicht Experte.

Grüße
Hanschi
Ricci-1969
Ricci-1969 19.11.2008 um 17:19:13 Uhr
Goto Top
@bastla
Ja, in etwa so würde ich das mit PHP auch machen, ein webserver hat man ja eh irgendwo. Deine Lösung ist natürlich bequemer, bin in VBScript halt nicht so fit.

Güssle Ricci
Hanschi
Hanschi 19.11.2008 um 17:52:37 Uhr
Goto Top
Hallo bastla,

bei der Textdatei handelt es sich um eine Datenträgeraustauschdiskette mit einer Bank. Hier kannst Du den Satzaufbau ersehen:

http://www.sparkasse-pforzheim-calw.de/download/dta_inlandszahlung.pdf

Aus diesen Daten (für ca. 4500 Mitglieder) will ich als Kassenwart für unsere Abteilung (ca. 250 Mitglieder) die Einzugsdaten filtern und in einer Excel-Tabelle für weitere Auswertungen und Kontrolle aufbereiten. Das ist mein Anliegen. Da ich ein Laie in VBScript und wie Ricci vorschlägt in PHB-Script bin, bitte ich um Nachsehen.
Würde mich freuen, wenn ich es trotzdem schaffen könnte, mein Problem zu lösen.
Bin morgen wieder "online".

Grüße aus München
Hanschi
Biber
Biber 19.11.2008 um 18:46:28 Uhr
Goto Top
Moin Hanschi,

das DTA-Format ist vermutlich irgendwann zwischen dem Kugelschreiber und der Alu-Folie erfunden worden, hatte seine Blütezeit irgendwann in den 80ern, als das Transportieren von 3,5"-Disketten von großen deutschen Steuerhinterzie^H^H^H Kreditinstituten als Electronic Banking euphorisch bejubelt wurde.

Führt zu drei Erkenntnissen
  • es ist ein offenes, lesbares und voll - wortwörtlich bis ins letzte Byte - dokumentiertes Format,
  • das sicherlich in den letzten 30 Jahren einige Tausend Male mit BASIC, dBase, Turbo-Pascal, VB und 20 Dialekten mehr zusammengeschrotet worden ist --- es MUSS einfach schon fertige Freewarelösungen zum "Konvertiere Text in DTA" oder "DTA zu CSV" geben
  • ..und sollte das nicht so sein, dann ist die Skripterstellung für eine/n Eure/r PraktikantInnen oder einen interessierten Neben-Jobber/ eine Neben-Jobbiene zwischen 14 und 20 Jahren die richtige Aufgabe. Kostet Euch 250 Hansels/Gretels je einen halben Euro, den Jobber 3 Abende vorm Rechner.

Auch wenn es bastla ( oder ein anderer begnadeter Skripter) in einem Bruchteil der Zeit schaffen würde - in diesem Fall widerstrebt es mir, dieses Rad hier im Forum zum (s.o. ) zig-tausendsten Mal neu erfinden zu lassen.

Zumal es eindeutig den Rahmen von "Abschub-Hilfe" beim Scripten sprengt.

Ich bitte um Dein Verständnis, aber ich schließe den Beitrag jetzt.

Grüße
Biber

Closed ######
Stehe gern für Erläuterung dieser Entscheidung per PN zur Verfügung.
Biber
Biber 20.11.2008 um 10:18:51 Uhr
Goto Top
Nachtrag.

Ich hatte ja gestern diesen Beitrag geschlossen - Begründung siehe oben.

Per PN bekam ich von Hanschi auch die Antwort, dass er, meinem Lösungsvorschlag folgend, im Netz auch ein DTA-nach-Excel-Konvertierungstool gefunden hat und dass nun auch dieser Beitrag als "Gelöst" angesehen werden kann.

Zusätzlich habe ich weiter oben gepostete "Beispieldaten" gelöscht, da diese nicht ganz frei erfunden waren.

Grüße und danke an Hanschi für das Feedback
Biber