メールマガジン【アクセスで作るシリーズ】
バックナンバー 【住所録ソフト編】 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.
◇転載について
このメールマガジンの無断転載などは、一切禁止です。
転載をご希望の方は、事前にメールで連絡をください。
◇免責
このメールマガジン及びホームページの内容による、いかなる損害、障害などに
関して発行者は一切の責任を負いません。
掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
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.
◇転載について
このメールマガジンの無断転載などは、一切禁止です。
転載をご希望の方は、事前にメールで連絡をください。
◇免責
このメールマガジン及びホームページの内容による、いかなる損害、障害などに
関して発行者は一切の責任を負いません。
掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□