メールマガジン【アクセスで作るシリーズ】
バックナンバー 【住所録ソフト編】 Vol.34
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
ACCESSで作るシリーズ 【住所録ソフト編】
発 行 : Yoshihisa Fukuda 2002.09.28 Vol.34
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
今回は、宛名印刷レポートの連名の印刷と、その他細かな調整です。
______________________________________
□ 宛名印刷レポートの元クエリー[LetterAddrPrint]を修正する。
1.住所録ソフトのデータベース[Address.mdb]を開きます。
2.データベースウィンドウの[クエリー]タブを選択します。
3.宛名印刷レポートの元クエリー[LetterAddrPrint]を選択し、[デザイン]ボタン
を押下してクエリービルダを開きます。
4.クエリービルダーの上段にある[AddressTable]の[ID]をダブルクリックして、
下段のフィールドに追加します。
5.クエリーを保存してクエリービルダを終了します。
______________________________________
□ 宛名印刷レポートの連名を印刷する。
1.データベースウィンドウの[レポート]タブを選択します。
2.宛名印刷レポート[LetterAddrPrint]を選択し、[デザイン]ボタンを押下して
デザインウィンドウを開きます。
3.ツールバーのテキストボックスを選択し、レポートの左上(非表示のテキスト
ボックスなので適当な位置で構いません)に追加します。
4.追加したテキストボックスの以下のプロパティを設定します。
名前 ・・・ ID
コントロールソース ・・・ ID
可視 ・・・ いいえ
5.もう一度、ツールバーのテキストボックスを選択し、レポートの左上(このテキ
ストボックスも非表示なので適当な位置で構いません)に追加します。
6.追加したテキストボックスの以下のプロパティを設定します。
名前 ・・・ PrintJointly
コントロールソース ・・・ PrintJointly
可視 ・・・ いいえ
7.連名表示用テキストボックスを追加します。
連名は4名までとします。(本人を入れて5名)
テキストボックスの追加は、新規で作成しても構いませんが、今回は以下の手順
で宛名フィールドをコピーして追加します。
(1)宛名テキストボックス[tbound5]を選択し、メニューの[編集]-[コピー]を
選択します。
(2)詳細セクションを選択し、メニューの[編集]-[貼り付け]を選択します。
貼り付けを4回行い、4つのテキストボックスをコピーします。
(3)コピーしたテキストボックスの縦のサイズを半分位(連名は性名の名だけ
表示するため)にして、宛名フィールドの左に4つを並べて配置します。
(4)追加した4つのテキストボックスを右(宛名フィールドに近い方)から順に
[名前]プロパティを[SubName1]、[SubName2]、[SubName3]、[SubName4]と
設定します。
(その他のプロパティは宛名フィールドのテキストボックスと同じです)
※ 連名の4つのテキストボックスは、上位置(縦の配置)はプログラムで行い
ますので、適当で構いません。
横の配置のみ、宛名フィールドの右側に等間隔に並べて下さい。
8.詳細セクションを選択した状態で、[フォーマット時]プロパティにカーソルを
移動して、右端の[...]ボタンを押下します。
9.モジュールウィンドウが開いたら、前に追加したコードの最後に SubNameDisp
と追加します。
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)
Call SubNameDisp <--この行を追加
End Sub
10.モジュールウィンドウの最後に以下のコードを追加します。
Private Function SubNameDisp()
Dim T_Join As Recordset
Dim SqlStr As String
Dim FirstName As String
Dim Pos As Integer
Dim xySize As Size
Dim TopPos As Integer
Dim I As Integer
For I = 1 To 4
Me("SubName" & I) = Null
Next I
If Me.PrintJointly = 0 Or Me.PrintAddr <> 1 Then
Exit Function
End If
SqlStr = "select SubName, Honor from JointlyTable where OwnerID=" & Me.ID
If Me.PrintJointly = 2 Then
SqlStr = SqlStr & " AND PrintFlg = True"
End If
Set T_Join = CurrentDb.OpenRecordset(SqlStr)
If T_Join.RecordCount = 0 Then
GoTo Exit_SubNameDisp
End If
Pos = InStr(1, Me.FullName, " ", vbTextCompare)
If Pos = 0 Then
Pos = InStr(1, Me.FullName, " ", vbTextCompare)
End If
If Pos = 0 Then
TopPos = Me.tbound5.Top
Else
FirstName = Left(Me.FullName, Pos)
If GetTextExtent(FirstName, Me.SubName1, xySize) Then
MsgBox "システムエラー"
Exit Function
End If
TopPos = Me.tbound5.Top + xySize.cx
End If
T_Join.MoveFirst
For I = 1 To 4
Me("SubName" & I).Top = TopPos
Me("SubName" & I) = T_Join.Fields("SubName") & " " & _
T_Join.Fields("Honor")
T_Join.MoveNext
If T_Join.EOF Then
Exit For
End If
Next I
Exit_SubNameDisp:
T_Join.Close
Set T_Join = Nothing
End Function
11.モジュールウィンドウを閉じて、レポートを保存して終了します。
______________________________________
□ 宛名印刷レポートをプレビューで確認する。
では、ここでまた、宛名印刷のレポートを確認します。
宛名印刷条件設定画面を開き、連名印刷のコンボボックスで[全ての連名を印刷]や
[指定した連名を印刷]を選択します。
[印刷]ボタンを押下して、連名印刷で指定した通りに連名が表示される事を確認して
下さい。
[全ての連名を印刷する]を選択した場合、住所フォームで登録した時の連名の[宛名
印刷]のチェックボックスに関係なく、全ての連名が表示されます。
[指定した連名を印刷]を選択した場合、住所フォームで登録した時の連名の[宛名印
刷]のチェックボックスにチェックの付いた連名だけ表示されます。
______________________________________
□ 宛名の敬称の付け方を変更する。
連名では、敬称を名前の下に、空白を1文字分あけて表示しました。
宛名の方は、氏名の長さに関係無く、いつも下の方に表示されています。
この宛名の敬称も、連名と同じく、名前の下に1文字分空白をあけて表示しましょう。
1.宛名印刷レポートをデザインで開きます。
2.現在の敬称表示フィールド[tbound6_Sub1]を削除します。
3.宛名フィールドを連名の時と同じ要領でコピーして、テキストボックスを1つ
追加します。
4.宛名フィールド[tbound5]の[可視]プロパティを[いいえ]にし、[名前]プロパティ
を[tbound5_sub]にします。
5.追加したテキストボックスの[名前]プロパティを[tbound5]と設定し[コント
ロールソース]プロパティを削除(空白)にします。
6.宛名フィールド[tbound5_sub]の位置に、追加した[tbound5]を配置します。
(宛名フィールド[tbound5_sub]は、サイズを小さくして邪魔にならない所へ移動
しておきましょう)
7.詳細セクションを選択した状態で[フォーマット時]プロパティにカーソルを移動
して、右端の[...]ボタンを押下します。
8.先ほど追加した Call SubNameDisp の前に以下のコードを追加します。
Me.tbound5 = Me.tbound5_sub & " " & Me.tbound6
9.モジュールウィンドウを閉じて、レポートを保存して終了します。
これで、宛名の敬称も、氏名の長さに合わせて表示される様になりました。
今回はここまでです。
次回も、もう少し宛名印刷の細かな点を修正します。
______________________________________
□ お知らせ。
1.共通ライブラリVer1.02について
今回のプログラムでは、共通ライブラリVer1.02を使用しております。
お手数ですが、最新の共通ライブラリVer1.02をダウンロードして下さいます様
お願いいたします。
今回の追加関数は GetTextExtent です。
この関数についての詳細は、また解説の時に説明いたします。
2.ホームページ引越しのお知らせ
9月23日より、ホームページが引越しました。
新しいURLは http://www.fsc-net.com です。
度々、申し訳ありませんがブックマークされている方は、修正をお願いします。
尚、トップページの上方にGoogleの検索ウィンドウがあります。
「ウェブ全体から検索」と「日本語のページを検索」はGoogleにあるものと
同じですが、それ以外に「当サイト内を検索」があります。
このチェックボックスをチェックすると、当サイト内の検索ができますが、
現在Googleに登録申請したばかりなので、まだ検索されません。
検索されるようになるまで、しばらくお待ち下さい。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
◇ 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.09.28 Vol.34
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
今回は、宛名印刷レポートの連名の印刷と、その他細かな調整です。
______________________________________
□ 宛名印刷レポートの元クエリー[LetterAddrPrint]を修正する。
1.住所録ソフトのデータベース[Address.mdb]を開きます。
2.データベースウィンドウの[クエリー]タブを選択します。
3.宛名印刷レポートの元クエリー[LetterAddrPrint]を選択し、[デザイン]ボタン
を押下してクエリービルダを開きます。
4.クエリービルダーの上段にある[AddressTable]の[ID]をダブルクリックして、
下段のフィールドに追加します。
5.クエリーを保存してクエリービルダを終了します。
______________________________________
□ 宛名印刷レポートの連名を印刷する。
1.データベースウィンドウの[レポート]タブを選択します。
2.宛名印刷レポート[LetterAddrPrint]を選択し、[デザイン]ボタンを押下して
デザインウィンドウを開きます。
3.ツールバーのテキストボックスを選択し、レポートの左上(非表示のテキスト
ボックスなので適当な位置で構いません)に追加します。
4.追加したテキストボックスの以下のプロパティを設定します。
名前 ・・・ ID
コントロールソース ・・・ ID
可視 ・・・ いいえ
5.もう一度、ツールバーのテキストボックスを選択し、レポートの左上(このテキ
ストボックスも非表示なので適当な位置で構いません)に追加します。
6.追加したテキストボックスの以下のプロパティを設定します。
名前 ・・・ PrintJointly
コントロールソース ・・・ PrintJointly
可視 ・・・ いいえ
7.連名表示用テキストボックスを追加します。
連名は4名までとします。(本人を入れて5名)
テキストボックスの追加は、新規で作成しても構いませんが、今回は以下の手順
で宛名フィールドをコピーして追加します。
(1)宛名テキストボックス[tbound5]を選択し、メニューの[編集]-[コピー]を
選択します。
(2)詳細セクションを選択し、メニューの[編集]-[貼り付け]を選択します。
貼り付けを4回行い、4つのテキストボックスをコピーします。
(3)コピーしたテキストボックスの縦のサイズを半分位(連名は性名の名だけ
表示するため)にして、宛名フィールドの左に4つを並べて配置します。
(4)追加した4つのテキストボックスを右(宛名フィールドに近い方)から順に
[名前]プロパティを[SubName1]、[SubName2]、[SubName3]、[SubName4]と
設定します。
(その他のプロパティは宛名フィールドのテキストボックスと同じです)
※ 連名の4つのテキストボックスは、上位置(縦の配置)はプログラムで行い
ますので、適当で構いません。
横の配置のみ、宛名フィールドの右側に等間隔に並べて下さい。
8.詳細セクションを選択した状態で、[フォーマット時]プロパティにカーソルを
移動して、右端の[...]ボタンを押下します。
9.モジュールウィンドウが開いたら、前に追加したコードの最後に SubNameDisp
と追加します。
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)
Call SubNameDisp <--この行を追加
End Sub
10.モジュールウィンドウの最後に以下のコードを追加します。
Private Function SubNameDisp()
Dim T_Join As Recordset
Dim SqlStr As String
Dim FirstName As String
Dim Pos As Integer
Dim xySize As Size
Dim TopPos As Integer
Dim I As Integer
For I = 1 To 4
Me("SubName" & I) = Null
Next I
If Me.PrintJointly = 0 Or Me.PrintAddr <> 1 Then
Exit Function
End If
SqlStr = "select SubName, Honor from JointlyTable where OwnerID=" & Me.ID
If Me.PrintJointly = 2 Then
SqlStr = SqlStr & " AND PrintFlg = True"
End If
Set T_Join = CurrentDb.OpenRecordset(SqlStr)
If T_Join.RecordCount = 0 Then
GoTo Exit_SubNameDisp
End If
Pos = InStr(1, Me.FullName, " ", vbTextCompare)
If Pos = 0 Then
Pos = InStr(1, Me.FullName, " ", vbTextCompare)
End If
If Pos = 0 Then
TopPos = Me.tbound5.Top
Else
FirstName = Left(Me.FullName, Pos)
If GetTextExtent(FirstName, Me.SubName1, xySize) Then
MsgBox "システムエラー"
Exit Function
End If
TopPos = Me.tbound5.Top + xySize.cx
End If
T_Join.MoveFirst
For I = 1 To 4
Me("SubName" & I).Top = TopPos
Me("SubName" & I) = T_Join.Fields("SubName") & " " & _
T_Join.Fields("Honor")
T_Join.MoveNext
If T_Join.EOF Then
Exit For
End If
Next I
Exit_SubNameDisp:
T_Join.Close
Set T_Join = Nothing
End Function
11.モジュールウィンドウを閉じて、レポートを保存して終了します。
______________________________________
□ 宛名印刷レポートをプレビューで確認する。
では、ここでまた、宛名印刷のレポートを確認します。
宛名印刷条件設定画面を開き、連名印刷のコンボボックスで[全ての連名を印刷]や
[指定した連名を印刷]を選択します。
[印刷]ボタンを押下して、連名印刷で指定した通りに連名が表示される事を確認して
下さい。
[全ての連名を印刷する]を選択した場合、住所フォームで登録した時の連名の[宛名
印刷]のチェックボックスに関係なく、全ての連名が表示されます。
[指定した連名を印刷]を選択した場合、住所フォームで登録した時の連名の[宛名印
刷]のチェックボックスにチェックの付いた連名だけ表示されます。
______________________________________
□ 宛名の敬称の付け方を変更する。
連名では、敬称を名前の下に、空白を1文字分あけて表示しました。
宛名の方は、氏名の長さに関係無く、いつも下の方に表示されています。
この宛名の敬称も、連名と同じく、名前の下に1文字分空白をあけて表示しましょう。
1.宛名印刷レポートをデザインで開きます。
2.現在の敬称表示フィールド[tbound6_Sub1]を削除します。
3.宛名フィールドを連名の時と同じ要領でコピーして、テキストボックスを1つ
追加します。
4.宛名フィールド[tbound5]の[可視]プロパティを[いいえ]にし、[名前]プロパティ
を[tbound5_sub]にします。
5.追加したテキストボックスの[名前]プロパティを[tbound5]と設定し[コント
ロールソース]プロパティを削除(空白)にします。
6.宛名フィールド[tbound5_sub]の位置に、追加した[tbound5]を配置します。
(宛名フィールド[tbound5_sub]は、サイズを小さくして邪魔にならない所へ移動
しておきましょう)
7.詳細セクションを選択した状態で[フォーマット時]プロパティにカーソルを移動
して、右端の[...]ボタンを押下します。
8.先ほど追加した Call SubNameDisp の前に以下のコードを追加します。
Me.tbound5 = Me.tbound5_sub & " " & Me.tbound6
9.モジュールウィンドウを閉じて、レポートを保存して終了します。
これで、宛名の敬称も、氏名の長さに合わせて表示される様になりました。
今回はここまでです。
次回も、もう少し宛名印刷の細かな点を修正します。
______________________________________
□ お知らせ。
1.共通ライブラリVer1.02について
今回のプログラムでは、共通ライブラリVer1.02を使用しております。
お手数ですが、最新の共通ライブラリVer1.02をダウンロードして下さいます様
お願いいたします。
今回の追加関数は GetTextExtent です。
この関数についての詳細は、また解説の時に説明いたします。
2.ホームページ引越しのお知らせ
9月23日より、ホームページが引越しました。
新しいURLは http://www.fsc-net.com です。
度々、申し訳ありませんがブックマークされている方は、修正をお願いします。
尚、トップページの上方にGoogleの検索ウィンドウがあります。
「ウェブ全体から検索」と「日本語のページを検索」はGoogleにあるものと
同じですが、それ以外に「当サイト内を検索」があります。
このチェックボックスをチェックすると、当サイト内の検索ができますが、
現在Googleに登録申請したばかりなので、まだ検索されません。
検索されるようになるまで、しばらくお待ち下さい。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
◇ 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.
◇転載について
このメールマガジンの無断転載などは、一切禁止です。
転載をご希望の方は、事前にメールで連絡をください。
◇免責
このメールマガジン及びホームページの内容による、いかなる損害、障害などに
関して発行者は一切の責任を負いません。
掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□