marcushb
Goto Top

Forlaufende (Rechnungs)Nummern auf Vollständigkeit prüfen....

Hallo,

erstmal wünsche ich Euch ein frohes neues Jahr !

Ich bin auf der Suche nach einer Lösung zu folgendem Problem. Ich lese den Inhalt eines Verzeichnisses aus und schreibe den Inhalt in ein Textfile.

inhalt.txt

DE1_2011_0000_1002267.pdf
DE1_2011_0000_1002268.pdf
DE1_2011_0000_1002269.pdf
DE1_2011_0000_1002270.pdf
DE1_2011_0000_1002271.pdf
DE1_2011_0000_1002272.pdf
DE1_2011_0000_1002274.pdf
DE1_2011_0000_1002275.pdf

Nun müßte das Script den Inhalt der TXT lesen und prüfen ob die Rechnungen forlaufend sind, in dem o.g. Fall fehlt die DE1_2011_0000_1002273.pdf, das sollte das Script zeigen.

Hat jemand ein Idee ?

Danke !

Gruß
Marcus

Content-ID: 157965

Url: https://administrator.de/forum/forlaufende-rechnungsnummern-auf-vollstaendigkeit-pruefen-157965.html

Ausgedruckt am: 11.01.2025 um 04:01 Uhr

maretz
maretz 04.01.2011 um 11:30:32 Uhr
Goto Top
in welcher sprache? EINE Option wäre z.B.:

a) Aufbau deiner Nummer: $DeineAufgebauteNummer = "DE1_2011_0000_"+$i+".pdf" -> wobei $i z.B. bei 1000001 anfängt und hochzählt

b) jetzt wanderst du einfach durch:

while (!EOF) if $TextDerZeile==$DeineAufgebauteNummer?
ja -> alles ok!
nein -> hier fehlt ne Nummer

Danach noch $i +1 rechnen und $DeineAufgebauteNummer = "DE1_2011_0000_"+$i+".pdf" -> schon hast du den nächsten Dateinamen....

Die Frage is eben welche Sprache du nehmen möchtest...
marcushb
marcushb 04.01.2011 um 11:45:19 Uhr
Goto Top
Hi,

danke für den ersten Ansatz, ich möchte das gerne als VB Script lösen !

Danke !

Gruß
bastla
bastla 04.01.2011 um 12:14:30 Uhr
Goto Top
Hallo marcushb!

Dann (unter der Annahme, dass die Liste in "inhalt.txt" sortiert ist und Einträge entsprechend Deiner Vorlage enthält) etwa so (oberflächlich getestet):
Inh = "D:\Inhalt.txt"  
Fehl = "D:\Fehlende.txt"  

Set fso = CreateObject("Scripting.FileSystemObject")  
Inhalt = Split(fso.OpenTextFile(Inh).ReadAll, vbCrLf)
Erste = Inhalt(0) 'erste Zeile --> niedrigste Nummer; Vorlage für weitere Zeilen  
ErsteNr = Split(Split(Erste, "_")(3), ".")(0) 'Nummer isolieren  
LfdNr = ErsteNr

For i = 1 To UBound(Inhalt)
    If Trim(Inhalt(i)) <> "" Then 'Prüfung von Leerzeilen vermeiden  
        LfdNr = LfdNr + 1 'nächste Nummer  
        Naechste = Replace(Erste, ErsteNr, LfdNr) 'vollständige nächste Zeile  
        Do While StrComp(Inhalt(i), Naechste, vbTextCompare) <> 0 'Groß-/Kleinschreibung ignorieren  
            F = F & vbCrLf & Naechste 'Liste der Fehlenden um eine Zeile erweitern  
            LfdNr = LfdNr + 1 'Nr hochzählen, bis nächste Vorhande gefunden wird  
            Naechste = Replace(Erste, ErsteNr, LfdNr)
        Loop
    End If
Next
fso.CreateTextFile(Fehl).Write Mid(F, 3) 'Liste ohne führende Zeilenschaltung in Datei schreiben  
Grüße
bastla
marcushb
marcushb 04.01.2011 um 12:34:16 Uhr
Goto Top
Hey Bastia,

wunderbar ;) vielen Dank für die schnelle Lösung !

Gruß
Marcus