Crystal Reportsで帳票出力を行う際、印字データの前後に接頭語や接尾語として固定文字をつける場合があります(例えば名称の後に”様”をつける等)。
固定文字を常に印字する場合は、ラベルとしてテキストオブジェクトを貼り付ければよいのですが、データがない場合は固定文字を出したく無い場合も有ります。
対処療法として、プログラムから”印字データ+固定文字”を渡してあげるという逃げ道も有りますがプログラム的に美しくないので出来れば避けたいです。
このような場合、条件付印字を行う事で対応できます。
例えば以下の帳票で、PostalCodeに値がセットされた時に限り”〒”マークを表示させてみます。
表示条件を指定するコントロールを右クリックして、オブジェクトの書式設定を選択します。
ダイアログの”非表示”の右にあるボタンをクリックします。
式ワークショップウィンドウが表示されます。
右下の入力欄に、以下の条件式を入力し、保存して閉じるボタンをクリックします。
if IsNull( {RepAddressLabel.PostalCode} ) or {RepAddressLabel.PostalCode} = "" then true else false |

今回のサンプルではデータセット名がRepAddressLabelだったので、{RepAddressLabel.PostalCode}となっています。比較対象の項目は、各自読み替えてください。
ここで指定する式は「非表示条件」なので、値がtrueの場合に表示されません。
プログラムから渡された値にNULLがこない事が確実な場合は、下記の条件式でもOKです。
if {RepAddressLabel.PostalCode} = "" then true else false |
先ほどクリックしたボタンの色が変わっているのを確認し、OKボタンをクリックします。
“非表示”の左にあるチェックボックスは、外したままにしてください。

これで、郵便番号(PostalCode)に値がセットされていた時に限り、〒マークが出るようになりました。
余談ですが、if文ではなくIIF()関数を使う場合は、Crystal Reportsの不具合でIIF()第一引数にIsNull()を使用時正しく認識してくれないバグががあるようです(このバグが発生するのは、Crystal Reportsのver8か10の時で、しかも条件式にの内容に依るらしいです…)。
ですので、この条件式は常にif文で書いた方が確実です。
関連記事
コメントを残す