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


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

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

    発 行 : Yoshihisa Fukuda          2002.10.19 Vol.35

■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
______________________________________
 □ 訂正とお詫び

いきなりですが、前回のVol.34に抜けがありました。
訂正してお詫びいたします。
以下が追加の内容です。

Vol.34
______________________________________
 □ 宛名印刷レポートの連名を印刷する。

7.連名表示用テキストボックスを追加します。
  連名は4名までとします。(本人を入れて5名)
  テキストボックスの追加は、新規で作成しても構いませんが、今回は以下の手順
  で宛名フィールドをコピーして追加します。

 (4)追加した4つのテキストボックスを右(宛名フィールドに近い方)から順に
    [名前]プロパティを[SubName1]、[SubName2]、[SubName3]、[SubName4]と
    設定します。
    (その他のプロパティは宛名フィールドのテキストボックスと同じです)


とありますが、もう一つプロパティの設定がありました。
追加した4つのテキストボックスの[コントロールソース]プロパティが[FullName]
となっていると思いますが、それを削除して下さい。

ちなみに、コピー元の宛名テキストボックス[tbound5]の[コントロールソース]プロ
パティは
______________________________________
 □ 宛名の敬称の付け方を変更する。

5.追加したテキストボックスの[名前]プロパティを[tbound5]と設定し[コント
  ロールソース]プロパティを削除(空白)にします。


の所で削除しています。

■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------

それでは、ここからは前回の続きです。
前回までに作成した宛名印刷のレポートを、もう少し見直します。

まず、最初に気付くのが、差出人の住所で番地等の数字が漢数字に変わっていません。

次に、宛先の住所が長い場合、2行になるように住所欄のテキストボックスを2行
作成していますが、今は1行しか使用していません。
長い住所が入ると後ろが削られてしまいます。

と言う事で、この2点を修正しましょう。
______________________________________
 □ 差出人住所の番地等の数字を漢数字に変換する。

要領は、宛名住所と同様なので、是非自分でチャレンジしてみて下さい。
判らない時には、以下の手順を参考にして下さい。

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

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

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

4.差出人住所[tbound8]テキストボックスに、以下のプロパティを設定します。

  可視  ・・・ いいえ
  幅   ・・・ 1cm
  高さ  ・・・ 1cm

5.[tbound8]を、左上(切手のあたり)へ移動しておきます。

  ※ 非表示のテキストボックスなので幅、高さは幾つでも構いません。
    レイアウトの邪魔にならない程度に小さくして、適当な位置に移動します。

6.差出人住所表示用のテキストボックスを追加します。

 (1)ツールバーのテキストボックスを選択し、コントロールウィザードを無効に
    しておいて、適当な位置にテキストボックスを追加します。
    (ラベルは必要無いので削除します)

 (2)追加したテキストボックスに、以下のプロパティを設定しましょう。

    名前      ・・・ SendAddr_sub
    縦書き     ・・・ はい
    背景スタイル  ・・・ 透明
    フォント名   ・・・ MS P明朝
    フォントサイズ ・・・ 9

    ※ フォント名とサイズは、好みで自由に設定して構いません。

7.詳細セクションを選択し、[フォーマット時]プロパティにカーソルを移動します。

8.右端の[...]ボタンを押下し、モジュールウィンドウが開いたら以前に記述した
  コードの最後に、2行のコードを追加します。

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
  Dim StrAddr As String

  If Me.PrintAddr = 1 Then
    StrAddr = StrConv(Me.Address, vbWide)
    Me.tbound3.Visible = False
    Me.tbound4.Visible = False
  Else
    StrAddr = StrConv(Me.OfficeAddress, vbWide)
    Me.tbound3.Visible = True
    Me.tbound4.Visible = True
  End If
  Me.Address_sub1 = AddrConv(StrAddr)
  Me.tbound5 = Me.tbound5_sub & " " & Me.tbound6
  Call SubNameDisp

  StrAddr = StrConv(Me.tbound8, vbWide) <----- 今回追加
  Me.SendAddr_sub = AddrConv(StrAddr)  <----- 今回追加

End Sub
______________________________________
 □ 宛先住所が長い場合、2行分割する。

ここでは、まず最初に宛先住所が1行で表示できるかチェックします。
1行で表示可能なら、そのまま1行で表示します。

1行に入りきらない場合、郵便番号テーブルを元に分割します。
住所を登録する際、郵便番号<=>住所変換を使用せずに入力して、郵便番号テーブル
と異なる文字を入力した場合、分割は出来なくなります。

分割が出来なくて、1行表示せざる負えない場合、自動的にフォントサイズを小さく
して表示します。

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

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

3.詳細セクションを選択し、[フォーマット時]プロパティにカーソルを移動します。

4.右端の[...]ボタンを押下し、モジュールウィンドウが開いたら先ほど追加した
  コードに、1行追加、1行修正します。

Private Sub Detail_Format(Cancel As Integer, FormatCount As Integer)
  Dim StrAddr As String

Me.Address_sub1.FontSize = AddrFSize
Me.Address_sub2.FontSize = AddrFSize

  If Me.PrintAddr = 1 Then
    StrAddr = StrConv(Me.Address, vbWide)
    Me.tbound3.Visible = False
    Me.tbound4.Visible = False
  Else
    StrAddr = StrConv(Me.OfficeAddress, vbWide)
    Me.tbound3.Visible = True
    Me.tbound4.Visible = True
  End If

  StrAddr = AddrConv(StrAddr)  <----- この行を修正
                     Me.Address_sub1 を StrAddr へ
SetAddress StrAddr       <----- この行を追加

  Me.tbound5 = Me.tbound5_sub & " " & Me.tbound6
  Call SubNameDisp

  StrAddr = StrConv(Me.tbound8, vbWide) <----- 先ほど追加したコード
  Me.SendAddr_sub = AddrConv(StrAddr)  <----- 先ほど追加したコード

End Sub

5.モジュールウィンドウの最初の変数宣言に、以下の変数を宣言を追加します。

Const ConvStr_A As String = "1234567890-"
Const ConvStr_B As String = "一二三四五六七八九〇ー"
Dim AddrFSize As Integer   <----- この行を追加

6.レポートを選択した状態で[開く時]プロパティにカーソルを移動し、右端の
  [...]ボタンを押下して、以下のコードを記述します。

Private Sub Report_Open(Cancel As Integer)
AddrFSize = Me.Address_sub1.FontSize
End Sub

7.モジュールウィンドウの最後に、以下のサブルーチンを記述します。

Private Function SetAddress(StrAddr As String)
  Dim xySize As Size
  Dim Addr1 As String
  Dim Addr2 As String
  Dim Addr3 As String
  Dim Addr4 As String
  Dim FSize As Integer

  Me.Address_sub1 = Null
  Me.Address_sub2 = Null

  If GetTextExtent(StrAddr, Me.Address_sub1, xySize) Then
    MsgBox "システムエラー"
    Exit Function
  End If
  If xySize.cx < Me.Address_sub1.Height Then
    Me.Address_sub1 = StrAddr
    Exit Function
  End If
  If AddrDivi(Me.ZipCode, StrAddr, Addr1, Addr2, Addr3, Addr4, "ZipCodeTable") Then
    Me.Address_sub1 = Addr1
    For FSize = Me.Address_sub1.FontSize To 8 Step -1
      Me.Address_sub1.FontSize = FSize
      If GetTextExtent(StrAddr, Me.Address_sub1, xySize) Then
        MsgBox "システムエラー"
        Exit Function
      End If
      If xySize.cx < Me.Address_sub1.Height Then
        Exit For
      End If
    Next FSize
  Else
    StrAddr = Addr1 & Addr2 & Addr3
    If GetTextExtent(StrAddr, Me.Address_sub1, xySize) Then
      MsgBox "システムエラー"
      Exit Function
    End If
    If xySize.cx < Me.Address_sub1.Height Then
      Me.Address_sub1 = Addr1 & Addr2 & Addr3
      Me.Address_sub2 = Addr4
    Else
      Me.Address_sub1 = Addr1 & Addr2
      Me.Address_sub2 = Addr3 & Addr4
    End If
  End If
End Function

8.コードが記述できたら、モジュールウィンドウを閉じます。

9.最後に宛名住所の2行目(Address_sub2)を選択し、[文字配置]プロパティを
  [右]にします。

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

以上で、差出人住所の番地等の漢数字変換と、宛先住所の2行分割ができました。

今回はここまでです。
この所、プログラミングが続いて、訳が判らなくなってきた方が結構いらっしゃる
ようです。
次回からは、今までのプログラムを順次、解説していきます。
______________________________________
 □ お知らせ。

 1.共通ライブラリVer1.03について

   今回のプログラムでは、共通ライブラリVer1.03を使用しております。
   お手数ですが、最新の共通ライブラリVer1.03をダウンロードして下さいます様
   お願いいたします。

   今回の追加関数は AddrDivi です。
   この関数についての詳細は、また解説の時に説明いたします。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□

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

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

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

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