Access入門(32)レポートデザインビュー説明~IIf-IsNullの説明~

今回は、前回からの続きでハガキウィザードにて作成したレポートの設計情報について説明をする第4回目です。

下図の通り、ナビゲーションウィンドウ内のレポート「顧客管理DM送付先」をダブルクリックして実行すると、レポート表示部分で「井上」の下に「様」と表示されています。

この部分は宛先が法人の場合には、「御中」と表示されます。つまり宛先の内容によって「様」と「御中」を切り替えている訳です。今回はこの部分について説明をします。

本箇所に関して設計情報を確認します。

ナビゲーションウィンドウ内のレポート「顧客管理DM送付先」を選択し、マウスの右クリックでデザインビューを選択すると、下図の通り、設計情報が確認できます。下図の下中央当たりの「様」を表示していた箇所を選択すると、右側にプロパティシートが表示されます。

このプロパティシートのコントロールソース欄を確認すると
=IIf(IsNull(Report![_Position])=-1,IIf(IsNull(Report![_Name])=-1,”御中”,”様”),
Report![_Position])
と表記されています。

まずは、IIFの部分ですが、
IIF(条件式,真の時の処理, 偽の時の処理)
となります。

IIFの条件式に当たる部分は、
IsNull(Report![_Position])=-1
となり、真の時の処理は
IIf(IsNull(Report![_Name])=-1,”御中”,”様”)
となり、偽の時の処理は
Report![_Position]
となります。

IIFの条件式に当たる部分
IsNull(Report![_Position])=-1
についてみていきます。

ここで、IsNull(式)という関数ですが、これは式内の値がNULLであるかを確認する関数です。NULLとは値が何もない状態を示します。

実際に値がNULLの場合には True(-1) となり、NULLでない場合にはFalse(0) となります。

つまり、IsNull(Report![_Position])は、
Report![_Position]
がNULLの場合には結果がTrue(-1)となり、NULLでない場合には結果がFalse(0)となります。

Report![_Position]に関しては、「Report」とは本レポートのことを指しており、「_Position」とは、レポート内に含まれるオブジェク(項目)を表しています。

では、「_Position」項目がどこにあるかを確認します。通常の作業では、下図の左側のレポートのデザインビューから項目を選択してプロパティシートの値を変更することが多いです。

しかし、今回のように自身が制作したものではなく、デザインビュー内にそれなりのオブジェクト(項目)がある場合には、該当の項目を探すのは大変です。しかし、決して見つからないという訳ではありませんので、有効な手段がない場合には地道に一つずつクリックして探していくしかありません。

システムを操作するのは、意外と地味なもので有効な手段が思いつかず地道な作業をしなければならない時が結構あります。その時はあきらめずに手段があれば作業を続けて行って下さい。何事もあきらめずにベストを尽くすことがスキルアップにつながるのです。

今回は、プロパティシートの下矢印を押すと本レポートのオブジェクト(項目)がすべて表示されますので、ここから探すと便利です。

下図の通り、プロパティシートから「_Position」を選択すると下図の下中央あたりにあるようにデザインビューでどこに項目があるかを表記してくれます。プロパティシートの可視欄を確認すると「いいえ」となっており、この項目がレポートには表示されない隠し項目であることが分かります。コントロールソース欄を確認するとブランクになっていることから、クエリとも非連結であることが確認できます。

つまり、本レポートでは
IsNull(Report![_Position])
部分のReport![_Position]はNULLとなりますので、
IsNull(Report![_Position])
の結果は、True(-1)となります。

最初に立ち戻り、IIFの条件式に当たる部分は、
IsNull(Report![_Position])=-1
でした。

また、IsNull(Report![_Position])の結果はTrue(-1)となりますから、結果
IsNull(Report![_Position])=-1
の部分は
-1=-1
となり、本条件式は真となります。

よって、IIFの条件式に当たる部分は、
IsNull(Report![_Position])=-1
となり、真の時の処理は
IIf(IsNull(Report![_Name])=-1,”御中”,”様”)
となり、偽の時の処理は
Report![_Position]
となりますから、
IIf(IsNull(Report![_Name])=-1,”御中”,”様”)
の部分が処理をされることになります。

IIf(IsNull(Report![_Name])=-1,”御中”,”様”)の部分ですが、
条件式は
IsNull(Report![_Name])=-1
で、条件式が真の時の処理は
“御中”
で、偽の時の処理は
“様”
となります。

Report![_Name])に何も値が入っていない場合には”御中”と表示し、何か値が入っている場合には”様”と表示します。

[_Name]項目は、上図のデザインビューでは「=[顧客名]」と記載されているところが該当します。つまり、クエリの顧客名欄に何か値が入っている場合には、”様”と表示して、何も入っていない場合には”御中”と表示することになります。

実際にそのような内容になっているかを確認します。

本レポートと連結しているクエリ「顧客管理DM送付先」を表示して、下図の顧客名欄の「井上」という値を削除します。

下図の通り、レポートを実行すると確かに顧客名が表示されていない時には御中と表示されていることが確認出来ます。

ただ、処理の内容だけを確認すると何か不思議な感じがします。

再度、レポート「顧客管理DM送付先」のデザインビューを表示してデザインビューの該当のオブジェクトをクリックしてプロパティシートを確認すると、名前欄に「_Company」とあります。

ハガキの場所などとプロパティに付けられた名前から、この欄には会社名が表示される箇所であることが推測できます。

ハガキを出すレポートですから、宛先がブランクというのはないという前提で、顧客名がブランクの場合には会社名のみが入力されていることになりますので、その場合は「御中」と表示され、会社名の記載の有無には関わらず顧客名が記載されている場合いは「様」と表示することになります。

本稿では、ハガキウィザードで作成した際に「御中」と「様」を切り替える部分について解説をしました。

実際の処理部分の関数は
=IIf(IsNull(Report![_Position])=-1,IIf(IsNull(Report![_Name])=-1,”御中”,”様”),
Report![_Position])
という部分ですが、IIfの中にIIfが入っており非常に複雑ですが、処理は1つずつしか行われませんので1つずつ順を追って内容を確認すると処理の内容を理解できます。

たかが、「御中」と「様」という文字を切り替えるだけですが、処理は割と複雑です。もし、本内容を変更しようとすると、ウィザードで作成した内容を理解できないと変更ができない訳ですから、ウィザードの内容を変えるのであればレポートを1から作成した方が簡単かもしれません。

「御中」と「様」を切り替えるのに、処理としては宛先がブランクというのはないという前提で、顧客名がブランクであるかないかで切り替えている訳です。

このように処理を作る際には、具体的にコンピュータ上でどのように表現するかということを考える必要があり、宛先がブランクというのはないという前提を加えたりなど、実際の内容とは必ずしも等価とは言えない部分もあります。

このような部分を考えることが処理を考えることになり、処理を作成する際の難しい部分でもあり、面白い部分でもあります。


ニコニコチャンネル(月額固定で見放題)
http://ch.nicovideo.jp/ai-light
本記事に関連する動画講座を閲覧できます。一部の動画は無料でも閲覧できます。

YouTubeチャンネル(無料動画配信中)
https://www.youtube.com/user/ailightcom
ITと経営に関する動画を配信しております。
よろしければ、チャンネル登録をお願い致します。

無料から学べる講座
https://www.ai-light.com/itkeiei/
本記事に関連する動画講座をセット販売しております。
その他、ITと経営に関する動画もセット販売しております。

格安ホームページ制作所
https://www.ai-light.com/hp2
インターネットマーケティングに関する記事が無料で閲覧可能です。

株式会社アイライト公式HP
https://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)

ITでお困りのことがございましたら、まずはご相談(コンサルティング)
https://www.ai-light.com/itconsulting.html


弊社は、主に中小企業様向けの業務システム開発ホームページ制作パソコンサポートコンサルティングなど、ITに関する様々なサービスを格安で提供しております。
特に小規模な業務システム開発の分野では、主にAccess(アクセス)を利用した柔軟で効率的な開発を得意としており、関西でダントツの実績があります。

業務システム開発に関しては、以下のような内容で対応しております。
・顧客管理などの単機能なシステムは20万円~50万円が多い。
・受注から入金まで業務全体システムで100万円~350万円ぐらいが多い。
・Access(アクセス)-SQLserverで大規模システム開発は350万円~1500万円が多い。

詳細は、Access(アクセス)、Excel(エクセル)、WEBサイト製作による小規模システム開発のページをご参考ください。

大阪商工会議所からの推薦を受けて、中小企業庁運営の中小企業支援事業に専門家として登録されました。
通称ミラサポ。3回まで無料でのコンサルティングが可能です。ご興味がある方はご連絡ください。
https://www.mirasapo.jp/


(近畿大学にて非常勤講師も務めたバリバリの技術屋が経営する会社)

Access(アクセス)Excel(エクセル)SQL server バーコード Webシステムを使った業務システムのシステム開発の無料相談を受付中

株式会社 アイライト 担当:内藤 響(Naito Ko)
〒550-0005 大阪市西区西本町1丁目5番9号 日清ビル 5F
(四つ橋線 本町駅 24番出口すぐ)
まずは、メール・電話でご相談ください。
TEL : (06) 6599-8890 E-mail : info@ai-light.com
お電話が混んでいる場合が多いので、つながりにくい場合は
TEL : (06) 6535-5117までお願いします。