|
IF、SKIPIF、NEXTIFフィールドを使うと条件を付けて差し込むことができます。
それぞれの特徴と違いをご紹介します。
|
フィールド・構文 |
特徴 |
使用例 |
|
{IF
条件 TRUE FALSE}
ラベル○レター○名簿○ |
処理を分岐(TrueならA、FalseならB)
●True/Falseで表示を分けられる |
●3歳以下は無料、それ以外は有料と表示
{
IF {MergeField 年齢} <= 3 "無料" "有料"} |
|
{SKIPIF
条件 }
ラベル×レター○名簿○ |
Trueならスキップして次を検証(Falseなら現在のレコード
で実行)
●現在のレコードを検証しTrueならスキップして次へ
(Falseは現在のレコードで指示実行後に次へ) |
●ランクAだけ差し込む
(Aでなければ飛ばす)
{SKIPIF {MergeField ランク} <> "A" }{MergeField
氏名} |
|
{NEXTIF
条件}
ラベル×レター○名簿○ |
Trueなら次レコードへ(Falseなら現在のレコードのまま)
●現在のレコードを条件に次のレコードを差し込むかを指定 |
●会社名が空白でないなら次も差し込む(同一種類の差し込み)
{NEXTIF {MergeField 会社名} <> "" }
{MergeFields 会社名} |
◆ 例:ランク「A」のみ「名前」を差し込む
→ ◎SKIPIFでランクがAではないなら飛ばす

{SKIPIF {MergeField ランク }
<> "A" } {MergeField 氏名 }
→ Aではない(True)ならスキップして次検証、Aなら(False)スキップせず現在のレコードの氏名を挿入して次へ
▼結果
◎処理◎
yamadaはランクBなので(True)スキップして次レコード検証
satoはランクAなので(False)スキップせず実行(レコード挿入)して次へ
kataokaはランクCなので(True)スキップして次レコード検証
nakanoはランクBなので(True)スキップして次レコード検証
yoshidaはランクCなので(True)スキップして次レコード検証
sasakiはランクAなので(False)スキップせず実行(レコード挿入)して次へ
終了
◎補足:IFやNEXTIFでは正しい結果はでません(次のようになっ
てしまう)特にNEXTIFは勘違いが多いので注意。
IF …
{IF
{MergeField ランク} = "A" { MergeField 氏名 } }
結果(ex. 名簿)★ランクAなら氏名を挿入 …
False(Aではない)場合に次のレコードを飛ばさないので空白が入り、次へ。
※IFフィールドでもFalseの場合の指示を入れていれば問題はありません(ランクAなら”合格"、そうでないなら”不合格”など)
→ {IF {MergeField ランク} = "A" "合格" "不合格" } 等★IF文に,は不要
NEXTIF …
{NEXTIF
{MergeField ランク} <> "A" } {MergeField 氏名}
→ TRUEなら次のレコードへ進み、指示を実行。FALSEなら現在のレコードで指示を実行。
NEXTIFはTrueなら次レコードで指示を実行するだけで次々と検証するわけではないので次のレコードへ進んだら判定せず実行してしまう(現レコードで実行か次レコードで実行かというだけ)
結果(ex. 名簿)★Aでないなら次
レコードで指示実行、Aなら現在のレコードで指示実行(→TRUEは次レコードを差し込むので、BやCが連続していたら2つ目は差し込まれてしまう)
yamadaはAではないので次レコードへ進んで指示実行(氏名挿入→sato)★1
Next → 2行目が実行されたので次へ
Next → (現在3行目)kataokaはAではないので次レコードへ
進んで、氏名nakano挿入(現在4行目)次へ
Next → (現在5行目)yoshidaはAではないので次レコードへ進んで
、氏名sasaki挿入(現在6行目)
★satoやyoshidaはAなので合っていますが、これはsatoやyoshidaがAだから指示を実行されたのではなく、その前のレコードがAではない(FALSE)なので、次のレコードで進んで実行されただけです。
◆ その他 SKIPIFやIFで適している例
◎80点以上の者のみ表示
{SKIPIF {MergeField 点数} <= 80 } {MergeField 氏名}
◎80点以上なら合格、80点未満なら不合格
{IF {MergeField 点数} >= 80 "合格"
"不合格"}
※NEXTIFはここのような状況では使えます。
|