2011-04-26 117 views
1

我正在设置从CSV文件读取的邮件合并文件。在CSV文件中,有〜20个布尔字段生成Word邮件合并文件的主体。问题是,如果前19个字段都是"N",那么Word邮件合并文件将有19个空格,然后在其下面输出第20个字段。有没有办法使用内置邮件合并规则来抑制这些空行的输出? 如何在Microsoft Word 2007邮件合并中压缩空白行?


这里的头和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放置在条件之前,但这也不起作用。

回答

0

我们通过改变线路解决了这个问题在对话框中的每条规则之后放置换行符 - 出于某种原因,在完成单词的邮件合并选项中包含的IF - > THEN - > ELSE规则后,Word会解析换行符。

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报告!这里是我用来实现类似目标的王牌报告的例子:

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

然后我们把这些规则背靠背,而不是:

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 
+0

谢谢,我今天会尝试了这一点。 ACE将无法满足这里的需求。它是一个perl脚本,它可以写入csv文件,创建回滚文件,记录用户输入和文件路径,并将csv文件通过电子邮件发送给执行程序,以便他/她可以将数据推送到邮件合并文件 – CheeseConQueso 2011-04-27 14:49:21

1

简单的事情就是跳过IF条件中的“错误”部分。

只写真实部分

IF MERGEFIELD = "Y" "true section" 

正如你包括假节,将(我认为)考虑到