Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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.)

Geschrieben

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.

Geschrieben

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.

Geschrieben
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.

Geschrieben

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.

Geschrieben
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.
Geschrieben
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.

Geschrieben
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

Geschrieben
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...

Geschrieben

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.

Geschrieben

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?

Geschrieben

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

Geschrieben
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.

Geschrieben
@ 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

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.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...