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-Key: 157965

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

Printed on: April 16, 2024 at 15:04 o'clock

Member: maretz
maretz Jan 04, 2011 at 10:30:32 (UTC)
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...
Member: marcushb
marcushb Jan 04, 2011 at 10:45:19 (UTC)
Goto Top
Hi,

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

Danke !

Gruß
Member: bastla
bastla Jan 04, 2011 at 11:14:30 (UTC)
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
Member: marcushb
marcushb Jan 04, 2011 at 11:34:16 (UTC)
Goto Top
Hey Bastia,

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

Gruß
Marcus