Devis02 Geschrieben 15. März 2006 Geschrieben 15. März 2006 Guten Morgen an alle, hab ein Problem. Hab von nem Vorgänger (der leider nicht mehr erreichbar ist) nen Projekt übernommen, dabei soll aus einem Programm etwas ausgelesen werden und dies wird dann über den Button drucken in eine ganz normale .txt-Datei kopiert und da abgespeichert. Problem ist das die Daten zwar in die Datei kopiert werden, ABER die werden immer ans Ende der Datei angehängt. Das soll nicht so sein, da es sich um ca 700 Datensätze handelt und die Datei immer unübersichtlicher wird, der Inhalt der .txt-Datei soll sozusagen erst komplett gelöscht werden bevor ich den Button drucken drücke. Also am besten ein Zusatz zu dem Skript was ich schon habe was ich dann irgendwie davor einbauen müsste. Was kann ich machen? Hab als FI/Systemintegration echt gar kein Plan. Danke schon mal an alle die mir irgendwie helfen können Devis02 Zitieren
Whatever Geschrieben 15. März 2006 Geschrieben 15. März 2006 Welche Sprache? Kopier doch mal den Qeullcode hier rein, der sich mit dem öffnen der Datei und dem reinschreiben befasst. Dort kann man nämlich angeben wie die Datei geöffnet wird (schreibend/schreibend am Ende/nur lesend/etc.) Zitieren
Devis02 Geschrieben 15. März 2006 Autor Geschrieben 15. März 2006 Also Sprache ist VBS.... sollte also Visual Basic Script sein wenn ich mich noch richtig an die Berufsschule erinnern tue. Also wie oben schon geschrieben heißt die Datei Druck_Format.vbs on error resume next antwort=inputbox("zu ändernde Datei angeben") set datei= Wscript.CreateObject("Scripting.FileSystemObject") set objFile = datei.OpenTextFile(antwort, 1) Rueckgabe=Replace(objFile.ReadAll, "", "ü") <-- Der Teil ist ziemlich sinn Rueckgabe=Replace(Rueckgabe,Chr(132), "ä") los da hier ja lediglich Rueckgabe=Replace(Rueckgabe,Chr(148), "ö") äöü eingefügt werden Rueckgabe=Replace(Rueckgabe,Chr(225), "ß") Rueckgabe=Replace(Rueckgabe,Chr(154), "ü") Rueckgabe=Replace(Rueckgabe,Chr(153), "Ö") objFile.close set objFile = datei.OpenTextFile(antwort, 2) objFile.write Rueckgabe objFile.close set objFile= datei.OpenTextFile(antwort, 1) set objFile2= datei.OpenTextFile("helpmeout.txt", 2,true) h=0 objFile2.writeline "|Ausweis|Personal|Ausgabe||||Betreuer|Zugangs|" objFile2.writeline "|Nummer|Nummer|Nummer|Name|Geschl.|Freidef.|Code|Profile|" while h<20000 strcomp1=objFile.readline strcomp4= left(strcomp1,4) if strcomp4 = "|000" then objFile2.writeline strcomp1 end if h=h+1 wend objFile.close objFile2.close set objFile= datei.OpenTextFile(antwort, 2) set objFile2= datei.OpenTextFile("helpmeout.txt", 1) Rueckgabe=objFile2.readall objFile.write Rueckgabe So das war der Text meines Vorgängers. Wie gesagt stammt nicht aus meiner Feder. Zitieren
Klotzkopp Geschrieben 15. März 2006 Geschrieben 15. März 2006 Bist du ganz sicher, dass angehängt wird? Dazu müsste IMHO irgendwo OpenTextFile mit 8 als zweitem Parameter aufgerufen werden. Ich sehe aber nur 1 und 2. Zitieren
Devis02 Geschrieben 15. März 2006 Autor Geschrieben 15. März 2006 Wir haben es hier auch nicht geglaubt, aber die Daten werden wirklich an das Ende der Datei angehängt. Immer Fortlaufend. Sagen die Zahlen etwa was aus????? Hätte gedacht das sind irgendwelche Variablen oder so was ähnliches. Zitieren
Klotzkopp Geschrieben 15. März 2006 Geschrieben 15. März 2006 Wir haben es hier auch nicht geglaubt, aber die Daten werden wirklich an das Ende der Datei angehängt. Immer Fortlaufend.Um welche Datei handelt es sich denn? Die, die der Benutzer angibt? Oder helpmeout.txt? Sagen die Zahlen etwa was aus????? Hätte gedacht das sind irgendwelche Variablen oder so was ähnliches.http://msdn.microsoft.com/library/en-us/script56/html/8575e5c4-dec5-48e7-92a2-790cac708c7f.asp The iomode argument can have any of the following settings: Constant Value Description ForReading 1 Open a file for reading only. You can't write to this file. ForWriting 2 Open a file for writing. ForAppending 8 Open a file and write to the end of the file. Zitieren
Devis02 Geschrieben 15. März 2006 Autor Geschrieben 15. März 2006 Also die Datei in die das reingeschrieben wird heiß $$DOSPR1.prt lässt sich ganz normal mit dem Editor öffnen. In der Helpmeout.txt ist nur der Kopf der Tabelle drin, also: |Ausweis|Personal|Ausgabe||||Betreuer|Zugangs | |Nummer|Nummer|Nummer|Name|Geschl.|Freidef.|Code| Profile| Merkwürdigerweise fällt mir auf das die $$DOSPR1.prt eigentlich nirgendwo im mir vorliegenden Quelltext aufgeführt wird. Mhhhhhh..... Das wird für mich immer undurchsichtiger. Zitieren
Klotzkopp Geschrieben 15. März 2006 Geschrieben 15. März 2006 Merkwürdigerweise fällt mir auf das die $$DOSPR1.prt eigentlich nirgendwo im mir vorliegenden Quelltext aufgeführt wird.Ist das denn der Dateiname, den der Benutzer in der Inputbox eingibt? Falls nicht, ist das das falsche Script. Zitieren
Devis02 Geschrieben 15. März 2006 Autor Geschrieben 15. März 2006 Ist das denn der Dateiname, den der Benutzer in der Inputbox eingibt? Falls nicht, ist das das falsche Script. Ja genau die Datei muss man da angeben. Wie gesagt VB Programmieren hab ich überhaupt gar nicht gehabt. Also wenn ich das richtig verstehe muss die Datei nicht direkt im Quelltext angegeben sein? Reicht das wenn man das bei der Inputbox eingibt??? Wenn ja würde sich das ganze für mich wieder besser erklären das die Angabe nicht im Quelltext stehen muss. Zitieren
Klotzkopp Geschrieben 15. März 2006 Geschrieben 15. März 2006 Also wenn ich das richtig verstehe muss die Datei nicht direkt im Quelltext angegeben sein? Reicht das wenn man das bei der Inputbox eingibt???Genau. Die Eingabe landet in der Variablen antwort, und die wird als Dateiname verwendet. Schreib doch bitte mal vor die Zeile (ziemlich weit unten) set objFile= datei.OpenTextFile(antwort, 2) folgendes: datei.DeleteFile antwort Zitieren
Devis02 Geschrieben 15. März 2006 Autor Geschrieben 15. März 2006 Schreib doch bitte mal vor die Zeile (ziemlich weit unten) set objFile= datei.OpenTextFile(antwort, 2) folgendes: datei.DeleteFile antwort Okay muss ich mal ausprobieren wenn mein Chef nachher wieder da ist und ich an den Rechner wieder ran komme. Dank dir schon mal Rückantwort ob es funktioniert gibt es natürlich. Spätestens Morgen früh... Zitieren
Devis02 Geschrieben 15. März 2006 Autor Geschrieben 15. März 2006 Hat leider nicht funktioniert. Die gewollte Datei hat sich ehrlich gesagt aber auch nicht verändert. Also die Datei füllt sich jetzt auch nicht mehr weiter, hab langsam wirklich das merkwürdige Gefühl das ich von der falschen Skriptadtei ausgehe. Dann wäre aber noch merkwürdiger das es gestern Nachmittag eindeutig und mit Datums und Zeitangabe belegt funktioniert hat. Hab aber auch mal suchen lassen (also *.vbs) und es gibt in dem Zusammenhang nur dieses Skript auf dem Rechner. Alle anderen .vbs Skripte liegen im System32 Ordner bzw auf der Backup Partition. Und ich weiß zu 100% das mein Vorgänger da nicht arbeiten sollte und durfte. Sonst noch ne Idee was da schief laufen könnte? Schau jetzt noch mal durch den gesamten Rechner ob ich hier irgendwo was finde was in die Richtung Skripte geht. Zitieren
Trux Geschrieben 16. März 2006 Geschrieben 16. März 2006 Ich weis ja nicht wie sensibel VBS mit windows rechten umgeht aber kann das nicht sein das der user in dessen kontext das script ausgeführt wird nur schreibende und lesende rechte aber kein löschen hat? Zitieren
Devis02 Geschrieben 16. März 2006 Autor Geschrieben 16. März 2006 Guten Morgen erstmal wieder. Muss mich ganz ganz ganz ganz dolle bei Klotzkopp entschuldigen.... Tut mir echt leid, aber deine Bemühungen gestern waren fast umsonst. Hatte den Auftrag meines Chefs ein wenig falsch verstanden. Weshalb meine Frage schon falsch formuliert war. Eigentlich ging es darum das dass vb Modul dafür gedacht war die Ausgabe "nur" zu formatieren. Das drucken und das anhängen was ich gestern als Problem definiert habe kam nicht von vb sondern von dem Programm aus dem ich die Datensätze kopiere. Sozusagen lag mein Problem nicht zu 100% bei vb. Nach reichlicher Überlegung kann ich das Problem aber doch mit vb lösen in dem ich einfach ein 2. Skript schreibe welches man vor dem "drucken" ausführen muss welches dann die Datei die ich geleert haben will löscht und dann wählt man den drucken Button. Dann müssten die Daten ja in eine leere Datei eingefügt werden. Wenn ihr mir noch mal helfen wollt (und würdet) wäre der Text zum löschen einer Datei richtig???? Oder wäre mein Ansatz da komplett in die falsche Richtung? Wie man merkt basiert es auf dem anderen Quelltext, da mangelder Programmiererfahrung. Druckerdokument_löschen.vbs on error resume next set objFile=datei.OpenTextFile(antwort, 2) antwort=inputbox("Geben sie die Datei an, die die zu ändernden Datensätze beinhaltet") datei.DeleteFile antwort object.close Zitieren
Devis02 Geschrieben 16. März 2006 Autor Geschrieben 16. März 2006 Ich weis ja nicht wie sensibel VBS mit windows rechten umgeht aber kann das nicht sein das der user in dessen kontext das script ausgeführt wird nur schreibende und lesende rechte aber kein löschen hat? @ Trux kann mir kaum vorstellen das wenn man lese und schreib rechte hat das man dann net dann auch rechte zum löschen hat. Zitieren
Amstelchen Geschrieben 16. März 2006 Geschrieben 16. März 2006 @ Trux kann mir kaum vorstellen das wenn man lese und schreib rechte hat das man dann net dann auch rechte zum löschen hat. ist aber so. NTFS erlaubt es, lese- und schreibrechte einer datei zu setzen, löschrechte aber zu verweigern. s'Amstel Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.