Hi also ihr lieben also hier mein Script,
vielleicht hat jemand Verwendung oder kann etwas optimieren hinsichtlich der Performenz oder so.
Na schaut selbst.
Warum habe ich das geschrieben und was ist der Nutzen.
Also ich lade mir alle paar Monate im schnitt ca alle 3 Monate eine CSV Datei von meiner Bank herunter
die Dateien haben sich von der Struktur verändert und daher war es per listview schwierig sie übersichtlich anzuzeigen
1: Array ausgabe die immer die selbe Anzahl spalten hat und die Infos in den zeilen sollten an der richtigen position sein
2:Es sollten keine Doppelten einträge enthalten sein; denn in der CSV konnte es zu dopplungen kommen da ich nicht immer am selben stichtag die Csv von der Bank gespeichert habe.
resultat ist auf jeden Fall erst einmal ein Array was Alle Infos nur einmal enthält und was zur weiteren bearbeitung funktioniert.
Freue mich über Feedback und anregungen.
$SP = StringSplit ("Buchungstag;Wert;Umsatzart;Begünstigter / Auftraggeber;Verwendungszweck;IBAN;BIC;Kundenreferenz;Mandatsreferenz ;Gläubiger ID;Fremde Gebühren;Betrag;Abweichender Empfänger;Anzahl der Aufträge;Anzahl der Schecks;Soll;Haben;Währung", ";")
Global $AR_KontoView[0][$SP[0]];Die CSV DB
Global $AR_TMP[1];Als zwischen speicher um Schnell dopplungen zu verhindern
Global $STRG_File_Konto = "Kontoumsaetze_000_123456789" ;So beginnt jeder DateiName der relevant ist.
Func _Auflist_CSV ($Dir, $STRG); Alle Relevanten KontoDateien werden gesammelt
Local $Len = StringLen ($STRG)
Local $AR_Return[1][2]
Local $AR = _FileListToArray ($Dir, "*.csv", Default, 2)
_ArraySort ($AR, 0)
For $1 = 1 To $AR[0]
Local $PS = StringSplit ($AR[$1], "\")
Local $FileName = $PS[$PS[0]]
If StringLeft ($FileName, $Len) = $STRG Then
_ArrayAdd ($AR_Return, $FileName & "|" & $AR[$1])
EndIf
Next
$AR_Return[0][0] = UBound($AR_Return)-1
Return $AR_Return
EndFunc
Func _Read_CSV($File) ;erstellt ein MultiArray mitallen infos
$varStart = 4 ;Zeile In der begonnen wird zu lesen
Local $AR = FileReadToArray ($File)
Local $AR_Return[1][0]
$Split = StringSplit ($AR[4], ";", 2);Splittet nach jedem Simikolon
ReDim $AR_Return[0][UBound($Split)]
_ArrayAdd ($AR_Return, _ArrayToString ($Split))
Local $DO = 1, $Nr = 5
Do
$STRG_Zeile = $AR[$Nr]
$Search = _ArraySearch ($AR_TMP, $STRG_Zeile, Default, Default, Default, 2)
If $Search = -1 Then
;Kein Eintrag
_ArrayAdd ($AR_TMP, $STRG_Zeile)
$Split = StringSplit ($STRG_Zeile, ";", 2);Splittet nach jedem Simikolon
_ArrayAdd ($AR_Return, _ArrayToString ($Split))
Else
;Gefunden
EndIf
If $Nr = UBound($AR)-2 Then
$DO = 0
Else
$Nr = $Nr +1
EndIf
Until $DO = 0
$AR_TMP[0] = UBound($AR_TMP)-1
_AR_Sort ($AR_Return)
EndFunc
Func _AR_Sort ($AR);Sortiert die einzelnen spalten in das Gesmt Array
$Start_View = UBound ($AR_KontoView)-1;Zeigt die Startzeile an in der die Zeilen hinzugefügt werden
ReDim $AR_KontoView[$Start_View+UBound ($AR)-1][UBound ($AR_KontoView, 2)]
For $1 = 0 To UBound ($AR_KontoView, 2)-1
For $2 = 0 To UBound ($AR, 2)-1
If $AR[0][$2] = $AR_KontoView[0][$1] Then
For $3 = 1 To UBound ($AR)-2
Local $Wert = $AR[$3][$2]
$AR_KontoView[$Start_View+$3][$1] = $Wert
Next
Else
EndIf
Next
Next
EndFunc
Alles anzeigen