|
Platzhalter in RTF Datei durch Formularwerte ersetzen
-
07-17-2007 16:40
|
|
-
Ursina Huwiler


- Registriert am 03-28-2006
- Schweiz
- Beiträge 47
|
Platzhalter in RTF Datei durch Formularwerte ersetzen
Hallo ASP-Profis
Auf dem Server hab ich einen Musterbrief in welchem sich Platzhalter für
Adresse und Anrede enthalten sind. Diese sollen via Formular ersetzt werden.
Beim Senden des Forms erhalte ich folgende Fehlermeldung: "Cannot use parentheses when calling a Sub" Danke für Eure Hilfe Ursina
Code:
Const ForReading = 1 Const ForWriting = 2 Const TristateFalse =
0
Dim FSO Dim objFile Dim strFile Dim strFileContent
Set FSO = Server.CreateObject("Scripting.FileSystemObject") Set objFile =
FSO.OpenTextFile(strFile) While Not objFile.AtEndOfStream
strFileContent = strFileContent & objFile.ReadLine &
"<br>" Wend
strFileContent = strFileContent.Replace("<<Strasse>>",
Request.Form("fldStrasse")) objFile.Write(ReplaceText) objFile.Close Set
objFile = nothing Set FSO = nothing
|
|
-
-
Oliver Waterkamp


- Registriert am 04-25-2006
- Zürich / Switzerland
- Beiträge 502
|
AW: Platzhalter in RTF Datei durch Formularwerte ersetzen
Du verwendest irgendwo...(habe nicht genau nachgeschaut ;-)) ein Sub als Function.
Subs haben keine Klammern !!!
Gruss, Oliver
Cheers, Oliver
|
|
-
-
Hubert Daubmeier


- Registriert am 03-07-2006
- Karlskron
- Beiträge 239
|
AW: Platzhalter in RTF Datei durch Formularwerte ersetzen
Ursina Huwiler:While Not objFile.AtEndOfStream strFileContent = strFileContent & objFile.ReadLine & "<br>" Wend
Der Teil geht einfacher per
strFileContent = objFile.ReadAll
Dann kommt die Ersetzung - sollte so passen
Ursina Huwiler:strFileContent = strFileContent.Replace("<<Strasse>>", Request.Form("fldStrasse"))
Dann musst du nur noch das Ersetzte auch verwenden :-)
Ursina Huwiler:objFile.Write(ReplaceText)
Sprich den Inhalt der Variablen wegschreiben die den ersetzen Inhalt enthält. Da braucht es keine Klammer; schaden tut sie aber auch nicht
objFile.Write strFileContent
(Schätze mal da lungert noch irgendwo im Hintergrund eine ReplaceText Sub rum
--
Viele Grüße Hubert Daubmeier
|
|
-
-
Ursina Huwiler


- Registriert am 03-28-2006
- Schweiz
- Beiträge 47
|
AW: Platzhalter in RTF Datei durch Formularwerte ersetzen
Im Script ist nirgendwo eine Funktion. @ Hubert So bekomme ich die folgende Fehlermeldung: Microsoft VBScript runtime error
'800a01a8'
Object required: '{\rtf1\ansi\ansicpg1'
/intern/katalogbestellung_ch.asp, line 192 Line 192: strFileContent = strFileContent.Replace("<<Strasse>>", Request.Form("fldStrasse")) Gibt es da ein Problem mit dem RTF Format. Code: Set FSO = Server.CreateObject("Scripting.FileSystemObject") Set objFile = FSO.OpenTextFile(strFile) strFileContent = objFile.ReadAll strFileContent = strFileContent.Replace("<<Strasse>>", Request.Form("fldStrasse")) objFile.Write strFileContent objFile.Close Set objFile = nothing Set FSO = nothing
Grüsse Ursina
|
|
-
-
Ursina Huwiler


- Registriert am 03-28-2006
- Schweiz
- Beiträge 47
|
AW: Platzhalter in RTF Datei durch Formularwerte ersetzen
Hab's mal so probiert: Set FSO = Server.CreateObject("Scripting.FileSystemObject") Set objFile = FSO.OpenTextFile(strFile) strFileContent = objFile.ReadAll
strFileContent = Replace(strFileContent, "<<Strasse>>", Request.Form("fldStrasse")) objFile.Write strFileContent objFile.Close
Set objFile = nothing Set FSO = nothing Dann erhalte ich auch eine Fehlermeldung: Microsoft VBScript runtime error
'800a0036'
Bad file mode
/intern/katalogbestellung_ch.asp, line 171 Line 171: objFile.Write strFileContent
Grüsse Ursina
|
|
-
-
Hubert Daubmeier


- Registriert am 03-07-2006
- Karlskron
- Beiträge 239
|
AW: Platzhalter in RTF Datei durch Formularwerte ersetzen
Ach ja - man könnte die Datei noch zum Schreiben aufmachen :-)
Bei der Gelegenheit, willst du wirklich Dein Template-Datei überschreiben? ' -- Konstanten
Const EAModus = 2 ' ForWriting
Const Erstellen = True ' Erstellen falls nicht vorhanden
Const Format = 0 ' ASCII Format
' -- template lesen
Set FSO = Server.CreateObject("Scripting.FileSystemObject")
Set objFile = FSO.OpenTextFile(strFile)
strFileContent = objFile.ReadAll
objFile.Close
' -- Inhalte füllen
strFileContent = Replace(strFileContent, "<>", Request.Form("fldStrasse"))
' -- Wegschreiben
Set objFile = FSO.OpenTextFile(strFile & ".out", EAModus, Erstellen, Format)
objFile.Write strFileContent
objFile.Close
' -- Aufräumen
Set objFile = nothing
Set FSO = nothing
BTW: Du weisst, dass du nicht überall schreiben darfst? BTW 2: Ich hänge dir mal die dazu passende Hilfeseite dazu. Such mal auf Deiner Platte nach vbscrip5.chm. Da steht alles drin.
-- Viele Grüße Hubert Daubmeier
Beschreibung
Öffnet eine angegebene Datei und gibt ein TextStream-Objekt zum Lesen aus der Datei, Schreiben in die Datei oder Anfügen an die Datei zurück.
Syntax
Objekt.OpenTextFile(Dateiname[, E/A-Modus[, Erstellen[, Format]]])
Die Syntax der OpenTextFile-Methode besteht aus folgenden Teilen:
| Teil |
Beschreibung |
| Objekt |
Erforderlich. Stets der Name eines FileSystemObject-Objekts. |
| Dateiname |
Erforderlich. Zeichenfolgenausdruck, der die zu öffnende Datei angibt. |
| E/A-Modus |
Optional. Gibt den Ein-/Ausgabemodus an. Es gibt drei mögliche Konstanten: ForReading, ForWriting oder ForAppending. |
| Erstellen |
Optional. Boolescher Wert, der angibt, ob eine neue Datei erstellt werden soll, wenn der angegebene Dateiname nicht existiert. True, wenn eine neue, False, wenn keine neue Datei erstellt werden soll. Der Standard ist False. |
| Format |
Optional. Einer von drei Tristate-Werten, mit denen das Format der geöffneten Datei angegeben wird. Ohne Angabe wird die Datei als ASCII geöffnet. |
Einstellungen
Das Argument E/A-Modus kann einen der folgenden Werte annehmen:
| Konstante |
Wert |
Beschreibung |
| ForReading |
1 |
Öffnet eine Datei nur zum Lesen. Schreibzugriffe sind nicht möglich. |
| ForWriting |
2 |
Öffnet eine Datei nur zum Schreiben. Sie können nicht aus ihr lesen. |
| ForAppending |
8 |
Öffnet eine Datei und schreibt an das Dateiende. |
Das Argument Format kann eine der folgenden Einstellungen aufweisen:
| Konstante |
Wert |
Beschreibung |
| TristateUseDefault |
-2 |
Öffnen der Datei im Format des Systemstandards. |
| TristateTrue |
-1 |
Öffnen der Datei im Unicode-Format. |
| TristateFalse |
0 |
Öffnen der Datei im ASCII-Format. |
Hinweise
Der folgende Code verdeutlicht die Verwendung der OpenTextFile-Methode, um eine Datei zum Schreiben von Text zu öffnen:
Sub OpenTextFileDemo
Const ForReading = 1, ForWriting = 2, ForAppending = 8
Dim fso, f
Set fso = CreateObject("Scripting.FileSystemObject")
Set f = fso.OpenTextFile("c:\test.txt", ForWriting, True)
f.Write "Hallo Welt!"
f.Close
End Sub
|
|
-
-
Hubert Daubmeier


- Registriert am 03-07-2006
- Karlskron
- Beiträge 239
|
AW: Platzhalter in RTF Datei durch Formularwerte ersetzen
Was da im Code fehlt hat der CS "verschluckt" - die öffnende und schliessende spitze Klammer samt dem was dazwischen steht.
|
|
-
-
Ursina Huwiler


- Registriert am 03-28-2006
- Schweiz
- Beiträge 47
|
AW: Platzhalter in RTF Datei durch Formularwerte ersetzen
Danke für die vielen Hinweise. Nach diesen Erklärungen hab ich gestern gesucht und sie nirgends gefunden - sehr hilfreich :-)
Nein, ich möchte mein Template natürlich nicht überschreiben, sondern die neue Datei direkt an ein Mail anhängen. Wie mach ich das?
In welchem Format muss eine RTF-Datei geöffnet und geschrieben werden? Ich hab sie mit TristateFalse geöffnet, also im ASCII-Format. Danke Grüsse Ursina
|
|
-
-
Hubert Daubmeier


- Registriert am 03-07-2006
- Karlskron
- Beiträge 239
|
AW: Platzhalter in RTF Datei durch Formularwerte ersetzen
Datei schreiben: nimm ein Verzeichnis das Schreib- aber keine Leserechte hat. Das wäre bei Standard-Installation (IIS 5 und 6) etwa das virtuelle Verzeichnis /scripts. Oder bei installierten Frontpage Extensions hast du in jedem Web ein _private Verzeichnis, wo die Rechte passend sitzen. Oder schreib in ein neu erstelltes virtuelles Verzeichnis mit wie gesagt: schreiben ja: lesen und browsen: nein.
ASCII-Format ist richtig an der Stelle. Bedeutet nicht als Unicode (16-bit Zeichen).
-- Viele Grüße Hubert Daubmeier
|
|
-
-
Ursina Huwiler


- Registriert am 03-28-2006
- Schweiz
- Beiträge 47
|
AW: Platzhalter in RTF Datei durch Formularwerte ersetzen
Läuft alles bis auf das Ersetzen der Platzhalter.
strFileContent = Replace(strFileContent, "<<Strasse>>", Request.Form("fldStrasse")) lasse ich die << >> weg, wird der Text ersetzt. Hab auch mit <*Strasse*> probiert - geht auch nicht. Welche Zeichen würden den gehen? Grüsse Ursina
|
|
-
-
Hubert Daubmeier


- Registriert am 03-07-2006
- Karlskron
- Beiträge 239
|
Re: AW: Platzhalter in RTF Datei durch Formularwerte ersetzen
Schuss ins Blaue
schau doch mal ob und ggf. wie die spitzen Klammern in RTF maskiert werden. Angenommen das wäre HTML, dann würde da nicht < sonden << Was ähnliches könnte da zutreffen.
Oder nimm einfach andere Zeichen. Eckige Klammern etwa. Oder was banales wie XXStrasseXX
-- Viele Grüße Hubert Daubmeier
> > Läuft alles bis auf das Ersetzen der Platzhalter. > > strFileContent = Replace(strFileContent, "", > Request.Form("fldStrasse")) > lasse ich die > weg, wird der Text ersetzt. Hab auch mit probiert - geht > auch nicht. Welche Zeichen würden den gehen? > Grüsse > Ursina > > > >
|
|
-
-
Ursina Huwiler


- Registriert am 03-28-2006
- Schweiz
- Beiträge 47
|
AW: Re: AW: Platzhalter in RTF Datei durch Formularwerte ersetzen
Ich glaub ich kann nehmen was ich will, es funktioniert nicht (xx...xx, nn...nn, [...], <*...*>, <<...>>) ... es ist zum heulen :-( ohne irgendwelche Markierung kann ich es nicht machen, da sonst auch andere Textteile im Brief ersetzt würden, die so bleiben sollen.
> schau doch mal ob und ggf. wie die spitzen Klammern in RTF maskiert > werden. Angenommen das wäre HTML, dann würde da nicht < > sonden << Was ähnliches könnte da zutreffen.
und wie/wo finde ich das heraus? Grüsse Ursina
|
|
-
-
Ursina Huwiler


- Registriert am 03-28-2006
- Schweiz
- Beiträge 47
|
AW: Re: AW: Platzhalter in RTF Datei durch Formularwerte ersetzen
Wer kann mir helfen? Ich dreh noch durch... Platzhalter in der RTF Datei: ==Vorname1== ==Name1==
==Name2==
==Name3==
==Strasse==
==Hausnummer==
==PLZ== ==Ort==
Warum wird mit dem folgenden Script immer nur die ==Strasse== ersetzt? Auch wenn ich die ==Zeichen wegnehme, es wird immer nur die Strasse ersetzt.
strFileContent = Replace(strFileContent, "==Vorname1==", Request.Form("fldVorname1")) strFileContent = Replace(strFileContent, "==Name1==", Request.Form("fldName1")) strFileContent = Replace(strFileContent, "==Name2==", Request.Form("fldName2")) strFileContent = Replace(strFileContent, "==Name3==", Request.Form("fldName3")) strFileContent = Replace(strFileContent, "==Strasse==", Request.Form("fldStrasse")) strFileContent = Replace(strFileContent, "==Hausnummer==", Request.Form("fldHausNr")) strFileContent = Replace(strFileContent, "==PLZ==", Request.Form("fldPLZ")) strFileContent = Replace(strFileContent, "==Ort==", Request.Form("fldOrt")) strFileContent = Replace(strFileContent, "==aktuellesDatum==", Date()) strFileContent = Replace(strFileContent, "==Anrede==", Request.Form("fldAnrede")) objFile.Write strFileContent objFile.Close
Vielen Dank Grüsse Ursina
|
|
-
-
Hubert Daubmeier


- Registriert am 03-07-2006
- Karlskron
- Beiträge 239
|
AW: AW: Re: AW: Platzhalter in RTF Datei durch Formularwerte ersetzen
Soweit ich das sehen kann – an dem hier gezeigtem Script
kann es fast nicht liegen.
Also eher außerhalb. Werden die Felder richtig übergeben? Schneller
Test siehe http://www.aspgerman.com/wiki/default.aspx/AspGerman.DebuggenVonFormularfeldern
Oder lass dir nach jedem Ersetzen das Ergebnis ausgeben.
Gruß
Hubert
Von: Ursina Huwiler
[mailto:bounce-Ursina_Huwiler@glengamoi.com]
Gesendet: Dienstag, 24. Juli 2007 20:18
An: hubertd@neusob.de
Betreff: [ASP] AW: Re: AW: Platzhalter in RTF Datei durch Formularwerte
ersetzen
Wer kann mir helfen? Ich dreh noch durch...
Platzhalter in der RTF Datei:
==Vorname1==
==Name1==
==Name2==
==Name3==
==Strasse==
==Hausnummer==
==PLZ== ==Ort==
Warum wird mit dem folgenden Script immer nur die ==Strasse== ersetzt? Auch
wenn ich die ==Zeichen wegnehme, es wird immer nur die Strasse ersetzt.
strFileContent = Replace(strFileContent,
"==Vorname1==", Request.Form("fldVorname1"))
strFileContent = Replace(strFileContent,
"==Name1==", Request.Form("fldName1"))
strFileContent = Replace(strFileContent,
"==Name2==", Request.Form("fldName2"))
strFileContent = Replace(strFileContent,
"==Name3==", Request.Form("fldName3"))
strFileContent = Replace(strFileContent,
"==Strasse==", Request.Form("fldStrasse"))
strFileContent = Replace(strFileContent,
"==Hausnummer==", Request.Form("fldHausNr"))
strFileContent = Replace(strFileContent,
"==PLZ==", Request.Form("fldPLZ"))
strFileContent = Replace(strFileContent,
"==Ort==", Request.Form("fldOrt"))
strFileContent = Replace(strFileContent,
"==aktuellesDatum==", Date())
strFileContent = Replace(strFileContent,
"==Anrede==", Request.Form("fldAnrede"))
objFile.Write strFileContent
objFile.Close
Vielen Dank
Grüsse
Ursina
|
|
-
-
Ursina Huwiler


- Registriert am 03-28-2006
- Schweiz
- Beiträge 47
|
AW: AW: Re: AW: Platzhalter in RTF Datei durch Formularwerte ersetzen
Hallo Hubert Also eher außerhalb. Werden die Felder richtig übergeben? Schneller
Test siehe http://www.aspgerman.com/wiki/default.aspx/AspGerman.DebuggenVonFormularfeldern
Der Test ist ok. Die Felder werden richtig ausgegeben. Oder lass dir nach jedem Ersetzen das Ergebnis ausgeben.
Wie kann ich mir nach jedem Ersetzen das Ergebnis anzeigen lassen. Mit eine MessageBox geht's nicht. Das ganze ist Neuland für mich, ich bitte um Verständnis. Danke
Ursina
|
|
|
|
|