Post by Folllast » 28 Feb 2018, 00:21
hab mir das gerade mal Funktionen angeschaut, wenn ich einen einfachereren Fall habe werde ich mir mal eine zusammen basteln. Aber momentan ist die Varianz der IF-Blöck noch zu groß für mich.
Code: Select all
Loop, Read, %eingabe%
{ ; Eingabefile lesen
If A_Index < 14 ; die ersten 14 Zeilen überspringen
Continue
StringSplit, Feld, A_LoopReadLine,`; ; Zeile aus CSV bei Semikolon trennen
debitornummer = %Feld1% ; Spalte 1 = Debitornummer
debitorname = %Feld2% ; Spalte 2 = Debitorname
nummer = %Feld4% ; Spalte 4 = Artikelnummer bzw. Auftragsnummer
name = %Feld5% ; Spalte 5 = Beschreibung
menge = %Feld6% ; Spalte 6 = Menge
MsgBox, %nummer%
If A_Index = 14
{ ; Zeile 14
MsgBox,
debnr = debitornummer ; Debitornummer "merken"
debname = debitorname ; Debitorname "merken"
menge = 0 ; Menge nullen
Continue ; nächste Zeile lesen
}
If A_Index = 15
{ ; Zeile 15
auftragsnummer = name ; Auftragsnummer "merken"
continue
}
if nummer between XXX and XXX
{ ; wenn Artikelnummer zwischen XXX & XXX ist
;MsgBox, test
StringSplit, dimension, name,[%A_Space%]xX ; Beschreibung Teilen bei Leerzeichen, x oder X
If (dimension1 = "XXX" or dimension1 = "XXX")
{ ; wenn der 1 String die XXX oder XXX ist....
mengelfwa += %menge% ; menge LFWA um Menge erhöhen
menge += %menge% ; Menge um Menge erhöhen
; nächste Zeile lesen
}
else
{
menge += %menge% ; Nur Menge erhöhen
continue ; nächste Zeile lesen
}
if nummer between XXX and XXX
{ ; wenn die Artikelnummer zwischen XXX & XXX ist
kupfer =1
continue
}
if (nummer = XXX)
{
; wenn die Artikelnummer XXX
verstaerkt =1
continue
}
if (nummer = "Auftragsnr.")
{ ; wenn ein neuer Auftrag anfängt
FileAppend, %menge%`;, ausgabe.csv ; Menge in die erste Spalte
FileAppend, %mengelfwa%`;, ausgabe.csv ; Menge in die erste Spalte
FileAppend, %debname%`;, ausgabe.csv ; Menge in die erste Spalte
FileAppend, %auftragsnummer%`;, ausgabe.csv ; Menge in die erste Spalte
FileAppend, %kupfer%`;, ausgabe.csv ; Menge in die erste Spalte
FileAppend, %verstaerkt%`;, ausgabe.csv ; Menge in die erste Spalte
MsgBox, fertig
}
MsgBox, ok
if debitornummer between XXX and XXX
{ ; wenn die ersten Spalte eine Debitornummer ist
; Die Werte müssen in eine neue Variable(debnr), da die alten (debitornummer) bei jeder Zeile neu beschrieben werden
auftragsnummer := nummer ; Auftragsnummer "merken"
debnr := debitornummer ; Debitornummer "merken"
debname := debitorname ; Debitorname "merken"
menge := 0 ; Menge nullen
Continue ; nächste Zeile lesen
}
;MsgBox, %nummer%
}
}
hab mir das gerade mal Funktionen angeschaut, wenn ich einen einfachereren Fall habe werde ich mir mal eine zusammen basteln. Aber momentan ist die Varianz der IF-Blöck noch zu groß für mich.
[code]Loop, Read, %eingabe%
{ ; Eingabefile lesen
If A_Index < 14 ; die ersten 14 Zeilen überspringen
Continue
StringSplit, Feld, A_LoopReadLine,`; ; Zeile aus CSV bei Semikolon trennen
debitornummer = %Feld1% ; Spalte 1 = Debitornummer
debitorname = %Feld2% ; Spalte 2 = Debitorname
nummer = %Feld4% ; Spalte 4 = Artikelnummer bzw. Auftragsnummer
name = %Feld5% ; Spalte 5 = Beschreibung
menge = %Feld6% ; Spalte 6 = Menge
MsgBox, %nummer%
If A_Index = 14
{ ; Zeile 14
MsgBox,
debnr = debitornummer ; Debitornummer "merken"
debname = debitorname ; Debitorname "merken"
menge = 0 ; Menge nullen
Continue ; nächste Zeile lesen
}
If A_Index = 15
{ ; Zeile 15
auftragsnummer = name ; Auftragsnummer "merken"
continue
}
if nummer between XXX and XXX
{ ; wenn Artikelnummer zwischen XXX & XXX ist
;MsgBox, test
StringSplit, dimension, name,[%A_Space%]xX ; Beschreibung Teilen bei Leerzeichen, x oder X
If (dimension1 = "XXX" or dimension1 = "XXX")
{ ; wenn der 1 String die XXX oder XXX ist....
mengelfwa += %menge% ; menge LFWA um Menge erhöhen
menge += %menge% ; Menge um Menge erhöhen
; nächste Zeile lesen
}
else
{
menge += %menge% ; Nur Menge erhöhen
continue ; nächste Zeile lesen
}
if nummer between XXX and XXX
{ ; wenn die Artikelnummer zwischen XXX & XXX ist
kupfer =1
continue
}
if (nummer = XXX)
{
; wenn die Artikelnummer XXX
verstaerkt =1
continue
}
if (nummer = "Auftragsnr.")
{ ; wenn ein neuer Auftrag anfängt
FileAppend, %menge%`;, ausgabe.csv ; Menge in die erste Spalte
FileAppend, %mengelfwa%`;, ausgabe.csv ; Menge in die erste Spalte
FileAppend, %debname%`;, ausgabe.csv ; Menge in die erste Spalte
FileAppend, %auftragsnummer%`;, ausgabe.csv ; Menge in die erste Spalte
FileAppend, %kupfer%`;, ausgabe.csv ; Menge in die erste Spalte
FileAppend, %verstaerkt%`;, ausgabe.csv ; Menge in die erste Spalte
MsgBox, fertig
}
MsgBox, ok
if debitornummer between XXX and XXX
{ ; wenn die ersten Spalte eine Debitornummer ist
; Die Werte müssen in eine neue Variable(debnr), da die alten (debitornummer) bei jeder Zeile neu beschrieben werden
auftragsnummer := nummer ; Auftragsnummer "merken"
debnr := debitornummer ; Debitornummer "merken"
debname := debitorname ; Debitorname "merken"
menge := 0 ; Menge nullen
Continue ; nächste Zeile lesen
}
;MsgBox, %nummer%
}
}[/code]