Supportnet Computer
Planet of Tech

Supportnet / Forum / Datenbanken

Daten aus .Dat Datei auslesen





Frage

Hallo Zusammen, Ich bin gerade dabei jemanden mit seiner Software zu helfen. Der Hat da ein Programm von 1987(!) was ihm ein Programmmierer, der mittlerweile schon lange nix mehr macht damals Geschrieben hat. Ist eigenlich auch ne extrem einfache Datenbank die man leicht mit SQL oder Accsess realisieren kann. Mein Problem ist das auslesen der Daten. Es gibt da .DAT und .LST Dateien die ich schonmal mit dem Editor geöffnet habe. Da ist alles etwas Chaotisch- Viele Leerzeilen/ ungeordnet .. aber die Daten kann man grundsätzlich auslesen. ( Für ne Dos Anwendung) Meine Frage- Gibt es da noch andere Programme die Die Daten irgendwie Anzeigen könnten? Hatte mal ne Hexadezimalansicht weiß aber nicht wie ich das Damals gemacht habe- Eigentlich will ich ja den Text auch haben. Irgendwie alter Dos ausleser-- Vieleicht hat ja jemand ne Idee. Gruß Michi

Antwort 1 von Teddy7

Hallo Michi !

Ich kenne das jetzt nur von alten PC_COBOL-Programmen.
Da stand der Datenteil in .DAT - Dateien.
Die konnte man einlesen wie eine Textdatei.
Wenn man den Satzaufbau und die Satzlänge kennt ist das weiter kein Problem - es sei denn es ist mit gepackten Feldern gearbeitet worden. Aber wenn Du die Zahlen im Editor lesen kannst war das wohl nicht der Fall.

Wenn Du den Satzaufbau nicht hast dann wird´s natürlich schwierig. Andere Editoren leisten da auch nicht mehr.
Da ist Handarbeit und tüfteln gefragt. Die Daten sind i.d.R. nicht "chaotisch" gespeichert. Da steht hat Z.B. in den ersten 5 Stellen die KundenNr, in Stelle 6 bis 10 die Postleitzahl, in Stelle 11 bis 40 der Ort, usw.
Dir bleibt nicht anderes übrig als zu versuchen, die Daten zu "orten" und die Stellen abzuzählen, die z.B. zwischen 2 Kundennummern liegen - das ist dann die Satzlänge.

Gruß
Teddy

Antwort 2 von Nicksohneende

Danke Für den Tip Teddy !!


Hab ja das Alte Programm und konnte die Daten so "orten" !

Nebenbei Hab ich den HexEditor gefunden, der Hilft schonmal übersicht in die sache zu bringen. Dann muss man die ZEichenabstände nicht von hand zählen.



Gibt es da sowas wie einen Universal Datensatz interpreter?

Wo man dann länge der Datensätze, Zeichen zwischen Attributen u.Ä. Angeben kann? Danach muss man das ja noch von hand Korrigieren, aber im Vorfeld kann man ja schon einiges automatisieren. Mit Excell wird das ein Krampf, Mit VBA könnte das irgendwie gehen aber suche eigenlich was braubreres.

Gruß Michi

Antwort 3 von lleopard

Hi Michi,

hier mal ne Idee was du in Anlehnung an Teddys Lösung in Access machen kannst:

1. Erstelle eine Type:

zB

Type Datensatz ' Datentyp definieren.
SATZART As String * 2
KD_Nummer As String * 10
Termin As String * 8
End Type

Natürlich mußt du das deinen Daten anpassen.

2. Die VBA Routine:

Da mußt du ein wenig basteln... im Prinzip kannst du nun die Zeilen deiner Dat- oder LST-Datei auslesen:

In etwa so:

ff = FreeFile 'freie Dateinummer holen
Open Path For Random As #ff Len = Len(DSatz1) - lng 'Importdatei öffnen
k = LOF(ff) 'Länge der datei auslesen
l = Loc(ff)

Get #ff, l, DSatz1

Du wirst über die Open-Methode weiterkommen und über Get kannst liest du nun die Datei zeilenweise aus...

Ein wenig Arbeit die sich vielleicht lohnt?!

Gruß Leo

Antwort 4 von NIckimliknbe

Hallo Leo und wer sonst noch mitliest,

Danke für die Info, Hab mir jetzt mal alles in Ruhe durchgelesen. und mich mit der hilfe Schlau gemacht. Hab jetzt wenigstens gechecked wie es funktionieren Soll.

Da ich die Codierung der Datensätze noch nicht ganz durchschaue will ich jetzt erstmal eine Excell Datei erstellen mit einem Datensatz (1024 Zchn.) pro Zeile, da kann ja ruhig auch alles erstmal in einer Zelle stehen.


Schau mal ob ich das mit deinem Vorschlag Hinbekomme und setzte die Sache jetzt mal um.


Gruß Michi

Antwort 5 von Teddy7

Ich würde die Datei in Access mit VBA-Programmmierung zeichenweise einlesen. Dabei kann man variabel vorgeben, wie lange der Datensatz sein soll. So kann man einfach rumprobieren, welche Einstellung paßt.

dim efeld as string
dim esatz as string
dim i1 as integer
Open "C:\EINGABE.TXT" For Input As #1 ' Datei öffnen.
esatz = ""
Do While Not EOF(1) ' Schleife bis Dateiende.
EFeld = Input(1, #1) ' Ein Zeichen lesen.
Esatz = Esatz & Efeld
i1 = i1 + 1
If I1 > 599 then
AKunde = Mid(esatz, 17, 5)
' d.h. Kunde steht ab Zeichen 17 in der Länge 5
......usw........
.......Datensatz aufbauen und speichern..........
esatz = ""
i1 = 0
end if
loop
.........usw.......


/////////
So - oder so ähnlich (nicht getestet) - würden 600 Zeichen eingelesen(das kann man natürlich auch in einer Variable vorgeben) und der Datensatz dann in die einzelnen Werte aufgeteilt. Das ist m.E. die einfachste und arbeitsärmste Art der Verarbeitung. Das hab ich schon öfter so gemacht.

Gruß
Teddy

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: