メールマガジン【アクセスで作るシリーズ】


バックナンバー 【住所録ソフト編】 Vol.28
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□

    ACCESSで作るシリーズ  【住所録ソフト編】

    発 行 : Yoshihisa Fukuda          2002.07.27 Vol.28

■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
今回は、はがき宛名印刷の続きで、ウィザードで作成したレポートの修正です。
______________________________________
 □ 郵便番号を7桁に修正する。

MS-Access97のはがきウィザードで作成したレポートは郵便番号が5桁です。
そこで、最初に郵便番号を7桁に修正しましょう。

1.住所録ソフトのデータベース[Address.mdb]を開きます。

2.データベースウィンドウの[レポート]タブを選択します。

3.はがき宛名印刷[LetterAddrPrint]を選択して[デザイン]ボタンを押下します。

4.郵便番号の位置に[tbound1_sub1]~[tbound1_sub5]と言うテキストボックスが
  5つ並んでいます。
  その右側にテキストボックスを2つ追加しましょう。

 (1)レポートを選択した状態で、[幅]プロパティの値を[10cm]にします。
 (2)ツールバーのテキストボックスを選択し[tbound1_sub5]の右側にテキスト
    ボックスを追加します。
 (3)追加したテキストボックスの以下のプロパティを設定します。
    名前        ・・・ tbound1_sub6
    コントロールソース ・・・ =Mid([tbound1],7,1)
    背景スタイル    ・・・ 透明
    フォント名     ・・・ MS ゴシック
    フォントサイズ   ・・・ 20
 (4)ツールバーのテキストボックスを選択し[tbound1_sub6]の右側にテキスト
    ボックスを追加します。
 (3)追加したテキストボックスの以下のプロパティを設定します。
    名前        ・・・ tbound1_sub7
    コントロールソース ・・・ =Mid([tbound1],8,1)
    背景スタイル    ・・・ 透明
    フォント名     ・・・ MS ゴシック
    フォントサイズ   ・・・ 20

 ここで少し解説を入れます。

【解説】
 [tbound1_sub1]を選択して、[コントロールソース]プロパティを見て下さい。
 =Mid([tbound1],1,1) となっていますね。

 この Mid と言う関数は、指定した文字列の指定した場所から指定した文字数分を
 切り出してくれる関数です。

 =Mid([tbound1],1,1) では、[tbound1]に設定されている文字列の1番目から1文字
 を切り出します。

 [tbound1]の[コントロールソース]プロパティは[ZipCode]なので、[tbound1_sub1]
 には郵便番号[ZipCode]の先頭の1文字が入ります。

 同様に[tbound1_sub2]と[tbound1_sub3]を見ると、それぞれ郵便番号の2文字目と
 3文字目が設定されています。

 では、[tbound1_sub4]を見て下さい。
 [コントロールソース]プロパティは[=Mid([tbound1],4,1)]となっています。

 アクセスのはがきウィザードでは、郵便番号は - 無しでテーブルに登録する仕様
 になっているので、郵便番号の4桁目は4文字目を設定しています。

 しかし、このメールマガジンのZipCodeは - 付きでテーブルに登録すると言う仕様
 なので、これでは[tbound1_sub4]は - になってしまいます。

 そこで、[tbound1_sub4]と[tbound1_sub5]の[コントロールソース]プロパティの
 修正が必要になります。

 この様に、郵便番号の印刷は、Mid関数を用いて、1文字づつ切り出して表示して
 います。

5.[tbound1_sub4]の[コントロールソース]プロパティを[=Mid([tbound1],5,1)]
  に修正します。

6.[tbound1_sub5]の[コントロールソース]プロパティも[=Mid([tbound1],6,1)]と
  修正します。

7.レポートを保存して終了します。

郵便番号の7桁への修正は以上です。
プレビュー画面で郵便番号が7桁表示されているか、確認してみましょう。

※ 印字位置の微調整は、全体の修正が終わってから、まとめてやりましょう。
______________________________________
 □ 敬称の印刷の仕方について。

次に、はがき宛名ウィザードで自動生成された敬称フィールドについて少し解説を
しておきます。
敬称のフィールド名は[tbound6_Sub1]です。

この[tbound6_Sub1]の[コントロールソース]プロパティには、
=IIf(IsNull([tbound6])=-1,IIf(IsNull([tbound5])=-1,"御中","様"),[tbound6])
と設定されています。

この複雑な[コントロールソース]プロパティの内容を解説していきます。

まず、IIf関数の書式ですが、1番目が条件、2番目が条件が真の時に返す値、
2番目が条件が偽の時に返す値です。

では、先頭から見てみましょう。

IIfの条件は IsNull([tbound6])=-1 です。
これは[tbound6]の値が Null の場合、真となり、Null でない場合、偽となります。

[tbound6]の[コントロールソース]プロパティを見ると[AddressTable.Honor]となって
いるので、これは住所フォームで設定した敬称です。

すなわち、住所フォームで敬称に何も設定していない(Null)場合、真に記述されて
いる IIf(IsNull([tbound5])=-1,"御中","様") となり、敬称に何か設定されている
(Nullで無い)場合、その敬称[tbound6]が[tbound6_Sub1]に返されます。

敬称が設定されている(Nullで無い)場合は、そのまま敬称が表示されるので問題あり
ません。

では、敬称が設定されていない(NULL)場合を見てみます。
その場合、IIf(IsNull([tbound5])=-1,"御中","様") とまたIIf文になります。

これも先ほどと同様で、条件が IsNull([tbound5])=-1 です。
すなわち、[tbound5]がNullの場合、真でNullで無い場合、偽となります。

では、[tbound5]の[コントロールソース]プロパティを見てみましょう。

[tbound5]は氏名[FullName]ですね。

従って、氏名が未入力(Null)の場合、"御中"、氏名が入力されている場合、"様"が
[tbound6_Sub1]に設定されます。

まとめると、まず、敬称が設定されていれば、その敬称が表示されます。
敬称が設定されていない場合、氏名が入力されていれば、"様"が、氏名が未入力なら
"御中"が表示されると言う仕組みです。

もし、住所フォームで必ず敬称を設定するなら、[tbound6_Sub1]の[コントロール
ソース]プロパティは[AddressTable.Honor]でも構わないと言う事になります。
______________________________________
 □ 差出人の郵便番号について。

では、次に差出人の郵便番号を見てみましょう。

[tbound7_sub1]と[tbound7_sub2]です。

まず、[tbound7_sub1]の[コントロールソース]プロパティは以下の様になっています。
='〒' & Mid([tbound7],1,3)

これは、差出人郵便番号[tbound7]の先頭から3文字を切り出して、その前に郵便
マーク(〒)を文字列連結しています。

次に、[tbound7_sub2]の[コントロールソース]プロパティは以下の様になっています。
=IIf(IsNumeric(Mid([tbound7],4,2))=True,"-" & Mid([tbound7],4,2),"")

これは、差出人郵便番号[tbound7]の4文字目から2文字を切り出し、それが数値で
あるかをチェックしています。
IsNumeric関数は、数値かどうかをチェックする関数です。

数値の場合、"-" と差出人郵便番号[tbound7]の4文字目から2文字を、文字列結合
しています。

数値でない場合、空き文字""を設定しています。

すなわち、昔の郵便番号は3桁と5桁だったため、5桁の時は - を付加して表示して
います。

しかし、このメールマガジンでは、郵便番号は - 付きでテーブルに設定するため、
- の付加は必要ありません。

また、郵便番号が7桁化されてから、7桁が必須となっているので、昔の様に3桁
だけの郵便番号はなくなりました。

従って、ここの表示はもっと簡単になります。

[tbound7_sub1]の[コントロールソース]プロパティに以下の様に設定しましょう。
='〒' & [tbound7]
これだけで、[tbound7_sub2]は必要ありません。

また、[tbound7]も使用せず、[tbound7_sub1]の[コントロールソース]プロパティに
='〒' & DLookUp("ZipCode","SenderTable")
と記述する事も可能です。


今回は、ここまでです。
次回は、住所の漢数字の変換、-の変換などを行います。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□

◇ ACCESSで作るシリーズ 【住所録ソフト編】
◇ 発 行 元  :Yoshihisa Fukuda(福田 義久)
◇ ご意見・ご要望
  ご質問等   :fukud@nifty.com

◇ このメールマガジンは、インターネットの本屋さん『まぐまぐ』を利用して発行
  しています。(まぐまぐID:0000077071)
◇ バックナンバー:http://homepage2.nifty.com/f-soft/
◇ 登録・解除  :http://homepage2.nifty.com/f-soft/

 Copyright(C) 2001-2002 Yoshihisa Fukuda All rights reserved.

◇転載について
 このメールマガジンの無断転載などは、一切禁止です。
 転載をご希望の方は、事前にメールで連絡をください。
◇免責
 このメールマガジン及びホームページの内容による、いかなる損害、障害などに
 関して発行者は一切の責任を負いません。
 掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□