2011-04-26 116 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" 

正如你包括假節,將(我認爲)考慮到