pat.bat
Goto Top

Problem erkannt, aber noch kein Lösungsansatz

Hallo zusammen,

das Programm befindet sich nun auf den letzten Metern, eine Funktion soll noch hinzugefügt werden und zwar, das Zahlungsempfänger aus einer Liste gefiltert werden und in eine eigene Liste kommen, damit diese Datei dann an die jeweilige Einrichtung gesendet werden kann.

Soweit so gut.

Das Fachverfahren kann mir solche Listen (mit allen ZE) als PDF, Excel oder Textdatei generieren.

Dabei sieht die Textdatei ungefähr so aus:

textdatei

Excel:

excel


Ich weiß, das sieht beides nicht optimal aus, aber das ist das, was ich bereit gestellt bekomme.


Das Ergebnis soll auf jedenfall so aussehen, das pro Träger, z.B. Die Caritas eine Datei erstellt wird worin dann eine Auflistung ist, welche Einrichtung (so ähnlich wie der Excel-Output) welchen Betrag samt Fallname zugeordnet wird.


Vielleicht muss ich mir dazu dann auch die Textdatei ausgeben lassen und diese dann letzendlich via VBA in Excel einspiele.

Der Ablauf könnte dann so aussehen, das ich im VB.Net Programm die Erstellung anstoße. Der Prozess dann durch die Textdatei looped (bei Spalte der Zahlungsempfänger) und damit dann eine Excel Datei erstellt und in dieser alle Einträge aus dem Loop einfügt. Danach gehts dann zum nächsten ZE usw.

Dabei sollen auch nur bestimmte ZE beachtet werden.


Ich hoffe ich konnte es einigermaßen verständlich rüber bringen.

Was meint ihr? Wie würdet ihr dieses Problem angehen?`

MfG

Patrick

Content-Key: 483013

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

Printed on: April 25, 2024 at 04:04 o'clock

Member: Bitboy
Bitboy Aug 08, 2019 at 09:29:21 (UTC)
Goto Top
Hi,

Zitat von @Pat.bat:
Ich hoffe ich konnte es einigermaßen verständlich rüber bringen.

hm...neeee.
Was genau bekommst du als Eingabe und wie soll die Ausgabe aussehen?
Bekommst du die Textdatei oder erstellst du die?

Grüße
Member: Pat.bat
Pat.bat Aug 08, 2019 updated at 09:47:36 (UTC)
Goto Top
die Textdatei wird von einem externen Programm generiert.

Ich habe jetzt mal folgenden Ansatz probiert:

Ich lese die Textdatei ein und anhand einer anderen csv oder Textdatei suche ich in der Hauptdatei nach bestimmten Wörtern
Danach speichere ich dann diese in jeweilige neue Textdatei(Erstmal nur zum testen)

    Private Sub btnZahllisten_Click(sender As Object, e As EventArgs) Handles btnZahllisten.Click
        Try
            Dim csvLines() As String = System.IO.File.ReadAllLines(".\ZE.txt", System.Text.Encoding.Default)  
            For Each csvline In csvLines
                Dim objStreamWriter As StreamWriter
                objStreamWriter = New StreamWriter(".\Zahllisten\" & csvline & ".txt")  
                Dim lines() As String = System.IO.File.ReadAllLines(".\Zahlliste.txt", System.Text.Encoding.Default)  
                For Each line In lines
                    If line.Contains(csvline) Then
                        objStreamWriter.WriteLine(line)
                    End If
                Next
                objStreamWriter.Close()
            Next
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try
    End Sub

folgendes Problemchen hat sich dabei aufgetan. Sobald ein Sonderzeichen wie zb. " in meiner ZE.txt vorkommt, fliegt er raus.

Sobald das Filtern ordentlich funktioniert, möchte ich die Daten übersichtlich in Excel Dateien abspeichern.

Als Ausgabe könnte ich mir sowas ähnliches wie im Excel Screenshot vorstellen.
Member: TheJoker2305
TheJoker2305 Aug 08, 2019 updated at 10:55:04 (UTC)
Goto Top
Hallo,

aktuell lässt sich vermuten, dass die Textdateien die eigentliche Datenquelle darstellen.
Je ZE-Name sollen dann die Daten in der Exceltabelle gefiltert ausgegeben werden.

Höchstwahrscheinlich ist dies ein Wiederkehrender Vorgang.

Auf die Schnelle könnte man per VB.net oder mit Excel VBA die Textdateien in die Exceltabelle einlesen.
Dann eine entsprechend Vorlagedatei kopieren und mit denb Daten des jeweiligen ZE-Name befüllen.

Ich würde hier als Lösung die Software Talend Open Studio for Data Integration verwenden. Damit werden Java-Jobs erstellt (diese können per Batch-Datei ausgeführt werden). Dabei werden folgende Schritte durchlaufen:

1. Textdatei aus einem Importpfad heraus importieren
2. Textdatei in ein Unterverzeichnis verschieben (für Nachvollziehbarkeit)
3. je ZE-Name ExcelVorlage-Datei in Export-Pfad kopieren und mit Datum versehen
4. Daten für den jeweiligen ZE eintragen
5. fertig face-smile

Die Daten können auch in einer Datenbank (MySQL oder MSSQL-Express) abgelegt werden und datenschutzkonform zeitnah wieder gelöscht werden.
Man kann diese Batch Datei dann automatisiert per Windows-Taskplaner ausführen lassen, oder per Robotask bei eintreffen der Textdateien... diese können per Skript auch automatisch aus Outlook heraus im Importpfad abgelegt werden. .... quasi ein kleiner ETL / Import-Export-Prozess.
Schnell, automatisiert, leicht anzupassen.

Bei Fragen gern PN

Greetz thejoker2305
Member: Bitboy
Bitboy Aug 08, 2019 at 10:09:53 (UTC)
Goto Top
Wo fliegt er raus und mit welcher Fehlermeldung?
Member: Pat.bat
Pat.bat Aug 08, 2019 at 10:39:10 (UTC)
Goto Top
folgende Fehlermeldung kommt hoch:

fehlermeldung

die ZE.txt hat mehrere Einträge.

Er kommt aber nur bis zu dem Eintrag wo in der Zeile zwei Anführungszeichen sind. Also gehe ich davon aus, das er mit diesen Zeichen nicht klar kommt.
Member: Pat.bat
Pat.bat Aug 08, 2019 updated at 11:09:47 (UTC)
Goto Top
OK er springt hier raus: objStreamWriter = New StreamWriter(".\Zahllisten\" & csvline & ".txt")

weil der String in csvline "Neues Ufer" ist und ein Dateiname keine Anfürhungszeichen haben kann. Also muss ich den Dateinamen so aufbauen, das er solche Zeichen vorher raus nehmen soll.

Nachtrag:

OK so funktioniert das jetzt so, das er die jewiligen ZE Einträge in eigene Textdateien schreibt:

    Private Sub btnZahllisten_Click(sender As Object, e As EventArgs) Handles btnZahllisten.Click
        Try
            Dim csvLines() As String = System.IO.File.ReadAllLines(".\ZE.txt", System.Text.Encoding.Default)  
            For Each csvline In csvLines
                Dim objStreamWriter As StreamWriter
                Dim FileName As String = csvline.Replace(Chr(34), "")  
                objStreamWriter = New StreamWriter(".\Zahllisten\" & FileName & ".txt")  
                Dim lines() As String = System.IO.File.ReadAllLines(".\Zahlliste.txt", System.Text.Encoding.Default)  
                For Each line In lines
                    If line.Contains(csvline) Then
                        objStreamWriter.WriteLine(line)
                    End If
                Next
                objStreamWriter.Close()
            Next
        Catch ex As Exception
            MessageBox.Show(ex.ToString)
        End Try
    End Sub

Jetzt muss es nur noch schön verpackt in eine Word oder Excel Datei.