2016-05-16 11 views
3

フォームのようにレイアウトされた表を持つ単語文書があります。私は%firstName%, %lastName%, %birthdate% ...のようなプレースホルダーを持っています。 replace()関数を使用すると、%firstName%, %lastName%, %birthdate%と他のすべてのプレースホルダフィールドは、1番目と2番目のページに置き換えられます。 2番目の後、何も置き換えられません。 3ページ目と4ページ目のプレースホルダーの名前はすべて1ページ目と2ページ目と同じです。私はプレースホルダーの名前をコピーして貼り付けただけで、スペースを追加していないことを確認しました。誰かがこれを起こしたかどうかを知りたいなら、それを修正するために何が行われたか教えてください。MS Word文書のすべてのページでColdfusion Replace()が機能しない

<cfset docPath = GetDirectoryFromPath(GetCurrentTemplatePath()) & "UserTemplate.rtf" />   
<cflock name="UserTemp" type="exclusive" timeout="30"> 
    <cfset rtf = FileRead(docPath) /> 
    <cfquery name = "qUserFormData"> 
     SELECT * FROM vUserFormData WHERE UserID = 3 
    </cfquery> 
    <cfset rtf = Replace(rtf,"%firstName%",#firstName#)/> 
    <cfset rtf = Replace(rtf,"%lastName%",#lastName#) /> 
    <cfset rtf = Replace(rtf,"%birthday%",#birthday#) /> 
</cflock> 
<cfheader name="content-disposition" value="filename=UserTemplate.doc" /> 
<cfcontent type="application/msword"><cfoutput>#rtf#</cfoutput> 
+3

質問には関係ありませんが、cflockの必要はありません。 – Leigh

答えて

6

the replace() method;範囲第4(オプション)のパラメータがあります。

範囲:

1:最初の発生(デフォルトに)
すべてを置き換える:「1」がデフォルトであり、唯一の最初の発生を置き換えることというすべてのオカレンス

はお知らせ置き換えます。このようにその四番目のパラメータを追加してみてください:

<cfset rtf = Replace(rtf,"%firstName%",firstName,"all") /> 
<cfset rtf = Replace(rtf,"%lastName%",lastName,"all") /> 
<cfset rtf = Replace(rtf,"%birthday%",birthday,"all") /> 

(ハッシュタグ#は、コードのこのビットには必要ありません。)

はまた、あなたが使用しているreplace()メソッドは大文字と小文字が区別されることに注意してください。

+0

Miguel-Fさん、ありがとうございました。本当にありがとう! – malibu65k

関連する問題