1

CSV ファイルから読み取る差し込み印刷ファイルを設定しています。CSV ファイルには、Word 差し込み印刷ファイルの本文を生成するブール フィールドが 20 個まであります。問題は、最初の 19 個のフィールドがすべて"N"の場合、Word の差し込み印刷ファイルに 19 個の空白があり、それらすべての下に 20 番目のフィールドが出力されることです。組み込みの差し込み印刷ルールを使用して、これらの空白行の出力を抑制する方法はありますか?


CSV ファイルのヘッダーとサンプル行は次のとおりです。

"firstname","lastname","PRNT1040","LEGALGRD","ACADTRAN","STUD1040","VERWKSIN","VERWKSDP","UNEMPLOY","SSCARD","HSDPLOMA","DPBRTCFT","DEATHCRT","USCTZPRF","SLCTSERV","PROJINCM","YTDINCM","LAYOFFNT","MAJRCARS","W2FATHER","W2MOTHER","W2SPOUSE","W2STUDNT","2YRDEGRE","4YEARDEG","DPOVERRD"
"Joe","Smith","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","N","Y"

これが私が試している差し込み印刷ファイルの数行です(差し込み印刷のコピーと貼り付けでは元の文書が表示されないため、画像はリンクされています)

msword_mailmerge


これを回避する方法を知っている人はいますか?条件の前に配置しようとしSKIPIFましたが、それもうまくいきません。

4

3 に答える 3

1

簡単なことは、IF 条件の「false」セクションをスキップすることでした。

本当の部分だけ書いて

IF MERGEFIELD = "Y" "true section"

あなたがfalseセクションを含めたので、それは(私が思うに)考慮に入れます

于 2012-02-24T15:24:07.590 に答える
1

次の条件付き IF フィールドは、中間の最初のフィールドが空のために発生する空白を削除します。

{FNAME} {IF {MI} <> "" "{MI} "}{LNAME} 

次の条件付き MERGEFIELD フィールドは、任意のフィールドの空白スペースを削除します。たとえば、次のフィールドがあるとします。

{Prefix} {FirstName} {LastName} 

次の条件ステートメントは、空白フィールドに通常含まれるスペースを適切に抑制します。

{IF {MERGEFIELD Prefix}<>"" "{MERGEFIELD Prefix} "}
{IF {MERGEFIELD FirstName}<>"" "{MERGEFIELD FirstName} "}
{IF {MERGEFIELD LastName}<>"" "{MERGEFIELD LastName}"} 

フィールド文字 ({}) を入力するには、[挿入] メニューから [フィールド] を選択します (または CTRL+F9 キーを押します)。

注: Informix からデータをアンロードし、パイプ区切り文字をコンマに置き換えることで csv を作成していますか?...おそらく、文字列をより適切に操作して csv ファイルを作成できる ace レポートを作成する方がよいでしょう! 同様の目的を達成するために私が使用する ace レポートの例を次に示します。

database pawnshop end

define
variable act integer
variable actven integer
variable ret integer
variable ven integer
variable cmp integer
variable plt integer
variable vta integer
variable tot integer
variable totprof integer
end


output
top margin 0
bottom margin 0
left margin 0
right margin 384 
report to "clientes.unl"
page length 200000
end


select
       pa_serial,
       pa_code,
       pa_store_id,
       pa_user_id,
       pa_cust_name,
       pa_id_type,
       pa_id_no,
       pa_dob,
       pa_address1,
       pa_city,
       pa_tel,
       pa_cmt,
       pa_entry_date,
       pa_last_date,
       pa_idioma,
       pa_apodo,
       pwd_id,
       pwd_trx_type,
       pwd_last_type,
       pwd_last_pymt,
       pwd_trx_date,
       pwd_pawn_amt,
       pwd_last_amt,
       pwd_cob1,
       pwd_cob2,
       pwd_cob3,
       pwd_cob4,
       pwd_update_flag,
       st_code,
       st_exp_days,
       st_com_exp,
       st_plat_exp 

  from CLIENTES, outer BOLETOS, storetab
 where pa_serial = pwd_id
   and pa_code = st_code
 order by pa_cust_name, pwd_last_pymt

end



format

on every row

if pwd_last_type = "E" then
begin
let act = act + 1
if today - pwd_last_pymt >= st_exp_days then
let actven = actven + 1
end


if pwd_last_type = "I" then
begin
let act = act + 1
if today - pwd_last_pymt >= st_exp_days then
let actven = actven + 1
end


if pwd_trx_type = "C" then
begin
let cmp = cmp + 1
if pwd_last_type = "C" and (today - pwd_last_pymt >= st_com_exp) then
let actven = actven + 1
end


if pwd_last_type = "R" then
begin
let ret = ret + 1
end


if pwd_trx_type = "P" and pwd_last_type = "P" then
begin
let plt = plt + 1
if today - pwd_last_pymt >= st_plat_exp then
let actven = actven + 1

end


if pwd_trx_type = "E" and pwd_last_type = "F" then
begin
let ven = ven + 1
end

if pwd_trx_type = "P" and pwd_last_type = "F" then
begin
let ven = ven + 1
end


if pwd_trx_type = "E" and pwd_last_type = "T" then
begin
let ven = ven + 1
end

if pwd_trx_type = "P" and pwd_last_type = "T" then
begin
let ven = ven + 1
end


before group of pa_cust_name
let totprof = 0
let tot = 0
let act = 0
let actven = 0
let ret = 0
let ven = 0
let cmp = 0
let plt = 0
let vta = 0


after group of pa_cust_name

print column 1, pa_serial using "<<<<<","|",
                pa_code clipped,"|",
                pa_store_id clipped,"|",
                pa_user_id clipped,"|",
                pa_cust_name clipped,"|",
                pa_id_type clipped,"|",
                pa_id_no clipped,"|",
                pa_dob using "mm-dd-yyyy","|",
                pa_address1 clipped,"|",
                pa_city clipped,"|",
                pa_tel clipped,"|",
                pa_cmt clipped,"|",
                pa_entry_date using "mm-dd-yyyy","|",
                pwd_last_pymt using "mm-dd-yyyy","|",
                act using "&&&","|",
                ret using "&&&","|",
                ven using "&&&","|",
                tot using "&&&","|",
                totprof using "-&&&&&","|",
                actven using "&&&","|",
                cmp using "&&&","|",
                pa_idioma,"|",
                pa_apodo,"|",
                plt using "&&&","|",
                vta using "&&&","|"
end
于 2011-04-27T01:18:51.203 に答える
0

行を変更することで問題を解決しました。

{ IF { MERGEFIELD PRNT1040} = "Y" "Write some text, then use a return line here " "" }

次に、ダイアログボックス内の各ルールの後に改行を配置する代わりに、それらのルールを背中合わせに配置します - 何らかの理由で、Word のメールに含まれる IF -> THEN -> ELSE ルールを通過した後、Word は改行を解析します。 -マージオプション。

于 2011-04-28T15:03:34.370 に答える