Ausgelesene Daten automatisch aufbereiten um in anderer DB (Programm) einzulesen.
Ein freundliches Hallo erstmal,
mein Name ist Frank und ich stehe vor einem (für mich
) unlösbaren Problem.
Die Aufgabenstellung ist aus Programm A ausgelesene Daten (vorgegebene Exportfunktion des Programms) in ein anderes Programm B einlesen.
Dazu müssen die Daten für Programm B aufbereitet werden (leider auch vorgegeben).
So weit so gut.... ich bekomme das auch hin mit viel gefummel. Das Problem ist das dies unsere Vertriebler machen sollen. Da dies ganze so komplex ist, denke ich das trotz Anleitung zu Fehlern führen wird.
Daher suche ich eine Möglichkeit das ganze zum teil zu Automatisieren. Zumindest die Aufbereitung der Daten, alles andere ist ohne Probleme mit Anleitung erklärt.
Die Aufbereitung der Daten ist aber so Komplex das ich nicht mal weiß wo ich ansatzweise anfangen soll.... auch weil scripten nicht unbedingt mein Ding ist.
Hier mal die dat Datei wie ich Sie aus Programm A erhalte:
und so bräuchte ich Sie als txt:
Semikolon als Trennzeichen und Raute als Datensatzende... die X stehen als Platzhalter da keine Leeren Felder sein dürfen!
Hoffe ich konnte mich deutlich ausdrücken
... ist das ganze so möglich das die Vertriebler nur in Ordner IN auf Desktop schieben und dann ausgabe in Ordner OUT und das ganze per batch oder script gewandelt wird?
Danke schon mal im voraus für eure Gedankengänge
Grüße Frank
[Edit Biber] Codeformatierung nachgezogen.
P.S. Sollten wir es nich in Richtung "Bätchkrams" schieben? [/Edit]
mein Name ist Frank und ich stehe vor einem (für mich
Die Aufgabenstellung ist aus Programm A ausgelesene Daten (vorgegebene Exportfunktion des Programms) in ein anderes Programm B einlesen.
Dazu müssen die Daten für Programm B aufbereitet werden (leider auch vorgegeben).
So weit so gut.... ich bekomme das auch hin mit viel gefummel. Das Problem ist das dies unsere Vertriebler machen sollen. Da dies ganze so komplex ist, denke ich das trotz Anleitung zu Fehlern führen wird.
Daher suche ich eine Möglichkeit das ganze zum teil zu Automatisieren. Zumindest die Aufbereitung der Daten, alles andere ist ohne Probleme mit Anleitung erklärt.
Die Aufbereitung der Daten ist aber so Komplex das ich nicht mal weiß wo ich ansatzweise anfangen soll.... auch weil scripten nicht unbedingt mein Ding ist.
Hier mal die dat Datei wie ich Sie aus Programm A erhalte:
PraxMini-Absender^PraxFensterzeile1^PraxFensterzeile2^PraxStrasse^PraxPlz^PraxOrt^PatNr^Anrede^Titel^Vorname^Namenszusatz^Nachname^Strasse^Plz^Ort^LBehandlung^LRecall^Telefon^EMail
Z1 - Maria Trost 25 - 56070 Koblenz^^Z1^Maria Trost 25^56070^Koblenz^ 1^Herrn^^Hans^^Glückskind^Maria Trost 25^56070^Koblenz^^^0261-80700-0^
Z1 - Maria Trost 25 - 56070 Koblenz^^Z1^Maria Trost 25^56070^Koblenz^ 2^Kind^^Felix^^Musterkind^Münsterlandstr. 4^99999^Musterstadt^31.08.2006^^0261/80700-0^compudent@compugroup.com
Z1 - Maria Trost 25 - 56070 Koblenz^^Z1^Maria Trost 25^56070^Koblenz^ 3^Frau^^Frieda^^Blox^Markus-Schleicher-Str. 12^07552^Gera^16.12.2004^^^
Z1 - Maria Trost 25 - 56070 Koblenz^^Z1^Maria Trost 25^56070^Koblenz^ 4^Herrn^Prof.^Kurt^^Tannert^Dahlienweg 12^08527^Plauen^01.10.2004^^0261/80^
Z1 - Maria Trost 25 - 56070 Koblenz^^Z1^Maria Trost 25^56070^Koblenz^ 5^Kind^^Hänschen^^Planung^Maria Trost 25^56070^Koblenz^23.03.1999^^0261/80^
1;x ;Hans ; Glückskind ;Maria Trost 25 ;56070 ;Koblenz ;0261-80700-0 #
2;x ;Felix ; Musterkind ;Münsterlandstr. 4 ;99999 ;Musterstadt ;0261/80700-0 #
3;x ;Frieda ; Blox ;Schleicher-Str. 12 ;7552 ;Gera ;x #
4;Prof. ;Kurt ; Tannert ;Dahlienweg 12 ;8527 ;Plauen ;0261/80 #
5;x ;Hänschen; Planung ;Maria Trost 25 ;56070 ;Koblenz ;0261/80 #
Hoffe ich konnte mich deutlich ausdrücken
Danke schon mal im voraus für eure Gedankengänge
Grüße Frank
[Edit Biber] Codeformatierung nachgezogen.
P.S. Sollten wir es nich in Richtung "Bätchkrams" schieben? [/Edit]
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 206528
Url: https://administrator.de/forum/ausgelesene-daten-automatisch-aufbereiten-um-in-anderer-db-programm-einzulesen-206528.html
Ausgedruckt am: 15.05.2025 um 13:05 Uhr
13 Kommentare
Neuester Kommentar
Hallo Mit.ohne.Ahnung und willkommen im Forum!
Bitte ergänze die Darstellung der Datensätze (insbes der Ausgangsdaten) durch "Code"-Formatierung (mit
Grüße
bastla
Bitte ergänze die Darstellung der Datensätze (insbes der Ausgangsdaten) durch "Code"-Formatierung (mit
<code>
und </code>
) ...Grüße
bastla
Hallo Mit.ohne.Ahnung!
Brauchst Du tatsächlich im Ergebnis nicht nur das Semikolon als Trennzeichen, sondern davor auch noch TAB?
Grüße
bastla
Versteh leider nicht wie du das meinst?
Biber hat die Formatierung nachgeholt (wenn Du den Beitrag editierst, kannst Du Dir auch ansehen, wie) - jetzt lässt sich auch erkennen, dass zB nach dem ersten "Koblenz" 2 Trennzeichen folgen ...Brauchst Du tatsächlich im Ergebnis nicht nur das Semikolon als Trennzeichen, sondern davor auch noch TAB?
Grüße
bastla
Hallo Mit.ohne.Ahnung!
Als VBScript zum Testen für eine Datei:
Grüße
bastla
Als VBScript zum Testen für eine Datei:
Ein = "D:\Ein.txt"
Aus = "D:\Aus.txt"
DelimAlt = "^"
DelimNeu = ";"
Zeilenende = "#"
FeldNummern = Array(6,8,9,11,12,13,14,17) 'benötigte Felder, Zählung beginnt bei 0
Set fso = CreateObject("Scripting.FileSystemObject")
'gesamten Dateiinhalt einlesen, leere Felder durch "x" ersetzen und in Zeilen aufteilen
Zeilen = Split(Replace(fso.OpenTextFile(Ein).ReadAll, DelimAlt & DelimAlt, DelimAlt & "x" & DelimAlt), vbNewLine)
For i = 1 To UBound(Zeilen) 'Kopfzeile überspringen
If Trim(Zeilen(i)) <> "" Then 'Leerzeilen nicht verarbeiten
Felder = Split(Zeilen(i), DelimAlt) 'Zeile in Felder aufspalten
A = A & vbNewLine & Trim(Felder(FeldNummern(0))) 'Zeilenschaltung und erstes Feld ohne Delimiter eintragen
For j = 1 To UBound(FeldNummern) 'übrige Feldnummern durchgehen
A = A & DelimNeu & Felder(FeldNummern(j)) 'weitere Felder mit vorangestelltem Delimiter hinzufügen
Next
A = A & Zeilenende 'Zeilenendekennung anfügen
End If
Next
fso.CreateTextFile(Aus).Write Mid(A, 3)'Inhalt schreiben, führende Zeilenschaltung in Zeile 1 überspringen
bastla
Hallo Mit.ohne.Ahnung!
Sinnvoll wäre es vermutlich, die ".dat"-Datei als Parameter zu übergeben (auch per Drag & Drop auf die Scriptdatei) und die neue Datei als ".txt" zu speichern - etwa so:
Grüße
bastla
Sinnvoll wäre es vermutlich, die ".dat"-Datei als Parameter zu übergeben (auch per Drag & Drop auf die Scriptdatei) und die neue Datei als ".txt" zu speichern - etwa so:
DelimAlt = "^"
DelimNeu = ";"
Zeilenende = "#"
FeldNummern = Array(6,8,9,11,12,13,14,17) 'benötigte Felder, Zählung beginnt bei 0
If WScript.Arguments.Count < 1 Then 'kein Parameter übergeben
WScript.Echo "DAT-Datei als Parameter übergeben!"
WScript.Quit 1
End If
Set fso = CreateObject("Scripting.FileSystemObject")
Ein = WScript.Arguments(0)
If LCase(Right(Ein, 4) <> ".dat" Then 'Eingabedatei nicht vom Typ ".dat"
WScript.Echo "DAT-Datei als Parameter übergeben!"
WScript.Quit 2
End If
Aus = Left(Ein, Len(Ein) - 3) & "txt" 'Ausgabedatei auf ".txt" umbenennen
'gesamten Dateiinhalt einlesen, leere Felder durch "x" ersetzen und in Zeilen aufteilen
Zeilen = Split(Replace(fso.OpenTextFile(Ein).ReadAll, DelimAlt & DelimAlt, DelimAlt & "x" & DelimAlt), vbNewLine)
For i = 1 To UBound(Zeilen) 'Kopfzeile überspringen
If Trim(Zeilen(i)) <> "" Then 'Leerzeilen nicht verarbeiten
Felder = Split(Zeilen(i), DelimAlt) 'Zeile in Felder aufspalten
A = A & vbNewLine & Trim(Felder(FeldNummern(0))) 'Zeilenschaltung und erstes Feld ohne Delimiter eintragen
For j = 1 To UBound(FeldNummern) 'übrige Feldnummern durchgehen
A = A & DelimNeu & Felder(FeldNummern(j)) 'weitere Felder mit vorangestelltem Delimiter hinzufügen
Next
A = A & Zeilenende 'Zeilenendekennung anfügen
End If
Next
fso.CreateTextFile(Aus).Write Mid(A, 3)'Inhalt schreiben, führende Zeilenschaltung in Zeile 1 überspringen
bastla
Hallo Mit.ohne.Ahnung!
Versuch es mit folgendem Ersatz der Zeilen ab 21:
Grüße
bastla
BTW: Es sollte doch eigentlich nicht nötig sein, dass Biber für Dich die Formatierung (ja, die aus meinem ersten Kommentar oben) übernehmen muss ...
Versuch es mit folgendem Ersatz der Zeilen ab 21:
'gesamten Dateiinhalt einlesen, leere Felder durch "x" ersetzen und in Zeilen aufteilen
Zeilen = Split(fso.OpenTextFile(Ein).ReadAll, vbNewLine)
For i = 1 To UBound(Zeilen) 'Kopfzeile überspringen
If Trim(Zeilen(i)) <> "" Then 'Leerzeilen nicht verarbeiten
Felder = Split(Zeilen(i), DelimAlt) 'Zeile in Felder aufspalten
A = A & vbNewLine & Trim(Felder(FeldNummern(0))) 'Zeilenschaltung und erstes Feld ohne Delimiter eintragen
For j = 1 To UBound(FeldNummern) 'übrige Feldnummern durchgehen
W = Felder(FeldNummern(j))' Feldinhalt auslesen
'Feldinhalte, die nur aus Leerzeichen und/oder einem TAB bestehen durch "x" ersetzen
If Trim(W) = "" Or Trim(W) = vbTab Then W = "x"
A = A & DelimNeu & W'weitere Felder mit vorangestelltem Delimiter hinzufügen
Next
A = A & Zeilenende 'Zeilenendekennung anfügen
End If
Next
fso.CreateTextFile(Aus).Write Mid(A, 3)'Inhalt schreiben, führende Zeilenschaltung in Zeile 1 überspringen
bastla
BTW: Es sollte doch eigentlich nicht nötig sein, dass Biber für Dich die Formatierung (ja, die aus meinem ersten Kommentar oben) übernehmen muss ...