メールマガジン【アクセスで作るシリーズ】
バックナンバー 【住所録ソフト編】 Vol.44
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
ACCESSで作るシリーズ 【住所録ソフト編】
発 行 : Yoshihisa Fukuda 2003.02.22 Vol.44
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
今回から、住所録印刷指示画面の指定に従いレポートを制御するプログラム作成です。
今回は、まずグループの制御を行うプログラムの作成を行います。
______________________________________
□ 住所録印刷レポートの元になるクエリー[AddressRepQuery]を修正する。
まず、最初に住所録印刷レポートの元になるクエリー[AddressRepQuery]を少し修正
します。
1.住所録ソフトのデータベース[Address.mdb]を開きます。
2.データベースウィンドウの[クエリー]タブを選択します。
3.[AddressRepQuery]を選択して[デザイン]ボタンを押下しクエリービルダーを
開きます。
4.下段のフィールドの最後にある[50on]フィールドのフィールド名[50on]を[Kana]
に修正します。
50on: IIf(IsNull([Furigana]),Null,Left([Furigana],1))
↓
Kana: IIf(IsNull([Furigana]),Null,Left([Furigana],1))
5.修正したらクエリーを保存してクエリービルダーを閉じます。
______________________________________
□ 住所録印刷指示画面に印刷ボタンを付加する。
1.データベースウィンドウの[フォーム]タブを選択します。
2.住所録印刷指示画面のフォーム[AddressRepForm]を選択し[デザイン]ボタンを
押下します。
3.ツールバーの[コマンドボタン]を選択し、フォームの下の方の[閉じる]ボタンの
横あたりでクリックします。(コントロールウィザードは有効にしておきます)
4.コマンドボタンウィザードの画面で[種類]を[レポートの操作]、[ボタンの動作]
を[レポートのプレビュー]にして[次へ]ボタンを押下します。
5.[コマンドボタンを使ってプレビューするレポートを選択して下さい]で住所録
[AddressRep]を選択し[次へ]ボタンを押下します。
6.[ボタンに表示する文字列またはピクチャを指定します]で[文字列]を選択し、
横のテキストボックスに[印 刷]と入力し[次へ]ボタンを押下します。
7.[ボタン名を指定して下さい]で[PrintBtn]と入力し[完了]ボタンを押下します。
______________________________________
□ 住所録印刷指示画面のグループ指定コンボボックスを修正する。
1.住所録印刷指示画面のグループ1コンボボックス[GroupCombo1]を選択し、以下の
プロパティを修正します。
値集合ソース・・・ "なし";"None";"都道府県";"Prefecture";"50音";"Kana"
列数 ・・・ 2
列幅 ・・・ XXcm;0cm (XX は[GroupCombo1]の[幅]プロパティの値
2.住所録印刷指示画面のグループ2コンボボックス[GroupCombo2]を選択し、以下の
プロパティを修正します。
値集合ソース・・・ "なし";"None";"都道府県";"Prefecture";"50音";"Kana"
列数 ・・・ 2
列幅 ・・・ XXcm;0cm (XX は[GroupCombo2]の[幅]プロパティの値
______________________________________
□ 住所録印刷指示画面の印刷ボタンにプログラムを記述する。
1.作成した[印刷]ボタンを選択し[クリック時]プロパティにカーソルを移動し、
右端の[...]ボタンを押下します。
2.モジュールウィンドウが開いたら、以下の様にプログラムを書き足します。
※先頭に#のある行が追加する行です。
先頭に*のある行は修正が必要な行です。
Private Sub PrintBtn_Click()
On Error GoTo Err_PrintBtn_Click
Dim stDocName As String
# Dim stLinkCriteria As String
# Call SetGroup
# stLinkCriteria = SetWhereStr
* stDocName = "AddressRep_W"
* DoCmd.OpenReport stDocName, acPreview, , stLinkCriteria
Exit_PrintBtn_Click:
Exit Sub
Err_PrintBtn_Click:
MsgBox Err.Description
Resume Exit_PrintBtn_Click
End Sub
3.モジュールウィンドウの最終行へカーソルを移動し、以下のサブルーチンを追加
します。
Private Sub SetGroup()
Dim dbs As Database
Dim stDocName As String
Dim GrpLevel As Variant
Dim Doc As Document
Dim RepCtl As Control
Set dbs = CurrentDb
With dbs.Containers!Reports
For Each Doc In .Documents
If Doc.Name = "AddressRep_W" Then
DoCmd.DeleteObject acReport, "AddressRep_W"
Exit For
End If
Next Doc
End With
DoCmd.CopyObject , "AddressRep_W", acReport, "AddressRep"
DoCmd.OpenReport "AddressRep_W", acViewDesign
If Me.GroupCombo1 <> "なし" Then
GrpLevel = CreateGroupLevel("AddressRep_W", Me.GroupCombo1.Column(1) _
, True, True)
Reports!AddressRep_W.Section(acGroupLevel1Header).Height = 300
Reports!AddressRep_W.Section(acGroupLevel1Footer).Height = 100
Set RepCtl = CreateReportControl("AddressRep_W", acTextBox, _
acGroupLevel1Header, , Me.GroupCombo1.Column(1), 90, 57, 800, 240)
RepCtl.Name = Me.GroupCombo1.Column(1)
Set RepCtl = Nothing
CreateReportControl "AddressRep_W", acLine, acGroupLevel1Header, , , _
57, 250, 14801, 0
CreateReportControl "AddressRep_W", acLine, acGroupLevel1Header, , , _
57, 300, 14801, 0
CreateReportControl "AddressRep_W", acLine, acGroupLevel1Footer, , , _
57, 57, 14801, 0
End If
If Me.GroupCombo2 <> "なし" Then
GrpLevel = CreateGroupLevel("AddressRep_W", Me.GroupCombo2.Column(1), _
True, True)
Reports!AddressRep_W.Section(acGroupLevel2Header).Height = 300
Reports!AddressRep_W.Section(acGroupLevel2Footer).Height = 100
Set RepCtl = CreateReportControl("AddressRep_W", acTextBox, _
acGroupLevel2Header, , Me.GroupCombo2.Column(1), 90, 57, 800, 240)
RepCtl.Name = Me.GroupCombo2.Column(1)
Set RepCtl = Nothing
CreateReportControl "AddressRep_W", acLine, acGroupLevel2Header, , , _
57, 250, 14801, 0
CreateReportControl "AddressRep_W", acLine, acGroupLevel2Header, , , _
57, 300, 14801, 0
CreateReportControl "AddressRep_W", acLine, acGroupLevel2Footer, , , _
57, 57, 14801, 0
End If
DoCmd.Close acReport, "AddressRep_W", acSaveYes
End Sub
※ プログラムのコードはメールマガジンの特性上、横のカラムが長く出来ないため
結合子( _ )で複数行に分割していますが、1行で記述しても構いません。
今回はここまでです。
次回はサブルーチンの続きで、抽出条件の設定、それから表示順序の設定を行います。
______________________________________
□ お知らせ。
・ホームページの更新について。
都合によりホームページの更新が24日(月曜日)の午後になります。
サンプル等が必要な方は、それ以降アクセス下さいますよう、お願いします。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
◇ ACCESSで作るシリーズ 【住所録ソフト編】
◇ 発 行 元 :Yoshihisa Fukuda(福田 義久)
◇ ご意見・ご要望
ご質問等 :fukud@nifty.com
◇ このメールマガジンは、インターネットの本屋さん『まぐまぐ』を利用して発行
しています。(まぐまぐID:0000077071)
◇ バックナンバー:http://www.fsc-net.com
◇ 登録・解除 :http://www.fsc-net.com
Copyright(C) 2001-2003 Yoshihisa Fukuda All rights reserved.
◇転載について
このメールマガジンの無断転載などは、一切禁止です。
転載をご希望の方は、事前にメールで連絡をください。
◇免責
このメールマガジン及びホームページの内容による、いかなる損害、障害などに
関して発行者は一切の責任を負いません。
掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
ACCESSで作るシリーズ 【住所録ソフト編】
発 行 : Yoshihisa Fukuda 2003.02.22 Vol.44
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
--------------------------------------
今回から、住所録印刷指示画面の指定に従いレポートを制御するプログラム作成です。
今回は、まずグループの制御を行うプログラムの作成を行います。
______________________________________
□ 住所録印刷レポートの元になるクエリー[AddressRepQuery]を修正する。
まず、最初に住所録印刷レポートの元になるクエリー[AddressRepQuery]を少し修正
します。
1.住所録ソフトのデータベース[Address.mdb]を開きます。
2.データベースウィンドウの[クエリー]タブを選択します。
3.[AddressRepQuery]を選択して[デザイン]ボタンを押下しクエリービルダーを
開きます。
4.下段のフィールドの最後にある[50on]フィールドのフィールド名[50on]を[Kana]
に修正します。
50on: IIf(IsNull([Furigana]),Null,Left([Furigana],1))
↓
Kana: IIf(IsNull([Furigana]),Null,Left([Furigana],1))
5.修正したらクエリーを保存してクエリービルダーを閉じます。
______________________________________
□ 住所録印刷指示画面に印刷ボタンを付加する。
1.データベースウィンドウの[フォーム]タブを選択します。
2.住所録印刷指示画面のフォーム[AddressRepForm]を選択し[デザイン]ボタンを
押下します。
3.ツールバーの[コマンドボタン]を選択し、フォームの下の方の[閉じる]ボタンの
横あたりでクリックします。(コントロールウィザードは有効にしておきます)
4.コマンドボタンウィザードの画面で[種類]を[レポートの操作]、[ボタンの動作]
を[レポートのプレビュー]にして[次へ]ボタンを押下します。
5.[コマンドボタンを使ってプレビューするレポートを選択して下さい]で住所録
[AddressRep]を選択し[次へ]ボタンを押下します。
6.[ボタンに表示する文字列またはピクチャを指定します]で[文字列]を選択し、
横のテキストボックスに[印 刷]と入力し[次へ]ボタンを押下します。
7.[ボタン名を指定して下さい]で[PrintBtn]と入力し[完了]ボタンを押下します。
______________________________________
□ 住所録印刷指示画面のグループ指定コンボボックスを修正する。
1.住所録印刷指示画面のグループ1コンボボックス[GroupCombo1]を選択し、以下の
プロパティを修正します。
値集合ソース・・・ "なし";"None";"都道府県";"Prefecture";"50音";"Kana"
列数 ・・・ 2
列幅 ・・・ XXcm;0cm (XX は[GroupCombo1]の[幅]プロパティの値
2.住所録印刷指示画面のグループ2コンボボックス[GroupCombo2]を選択し、以下の
プロパティを修正します。
値集合ソース・・・ "なし";"None";"都道府県";"Prefecture";"50音";"Kana"
列数 ・・・ 2
列幅 ・・・ XXcm;0cm (XX は[GroupCombo2]の[幅]プロパティの値
______________________________________
□ 住所録印刷指示画面の印刷ボタンにプログラムを記述する。
1.作成した[印刷]ボタンを選択し[クリック時]プロパティにカーソルを移動し、
右端の[...]ボタンを押下します。
2.モジュールウィンドウが開いたら、以下の様にプログラムを書き足します。
※先頭に#のある行が追加する行です。
先頭に*のある行は修正が必要な行です。
Private Sub PrintBtn_Click()
On Error GoTo Err_PrintBtn_Click
Dim stDocName As String
# Dim stLinkCriteria As String
# Call SetGroup
# stLinkCriteria = SetWhereStr
* stDocName = "AddressRep_W"
* DoCmd.OpenReport stDocName, acPreview, , stLinkCriteria
Exit_PrintBtn_Click:
Exit Sub
Err_PrintBtn_Click:
MsgBox Err.Description
Resume Exit_PrintBtn_Click
End Sub
3.モジュールウィンドウの最終行へカーソルを移動し、以下のサブルーチンを追加
します。
Private Sub SetGroup()
Dim dbs As Database
Dim stDocName As String
Dim GrpLevel As Variant
Dim Doc As Document
Dim RepCtl As Control
Set dbs = CurrentDb
With dbs.Containers!Reports
For Each Doc In .Documents
If Doc.Name = "AddressRep_W" Then
DoCmd.DeleteObject acReport, "AddressRep_W"
Exit For
End If
Next Doc
End With
DoCmd.CopyObject , "AddressRep_W", acReport, "AddressRep"
DoCmd.OpenReport "AddressRep_W", acViewDesign
If Me.GroupCombo1 <> "なし" Then
GrpLevel = CreateGroupLevel("AddressRep_W", Me.GroupCombo1.Column(1) _
, True, True)
Reports!AddressRep_W.Section(acGroupLevel1Header).Height = 300
Reports!AddressRep_W.Section(acGroupLevel1Footer).Height = 100
Set RepCtl = CreateReportControl("AddressRep_W", acTextBox, _
acGroupLevel1Header, , Me.GroupCombo1.Column(1), 90, 57, 800, 240)
RepCtl.Name = Me.GroupCombo1.Column(1)
Set RepCtl = Nothing
CreateReportControl "AddressRep_W", acLine, acGroupLevel1Header, , , _
57, 250, 14801, 0
CreateReportControl "AddressRep_W", acLine, acGroupLevel1Header, , , _
57, 300, 14801, 0
CreateReportControl "AddressRep_W", acLine, acGroupLevel1Footer, , , _
57, 57, 14801, 0
End If
If Me.GroupCombo2 <> "なし" Then
GrpLevel = CreateGroupLevel("AddressRep_W", Me.GroupCombo2.Column(1), _
True, True)
Reports!AddressRep_W.Section(acGroupLevel2Header).Height = 300
Reports!AddressRep_W.Section(acGroupLevel2Footer).Height = 100
Set RepCtl = CreateReportControl("AddressRep_W", acTextBox, _
acGroupLevel2Header, , Me.GroupCombo2.Column(1), 90, 57, 800, 240)
RepCtl.Name = Me.GroupCombo2.Column(1)
Set RepCtl = Nothing
CreateReportControl "AddressRep_W", acLine, acGroupLevel2Header, , , _
57, 250, 14801, 0
CreateReportControl "AddressRep_W", acLine, acGroupLevel2Header, , , _
57, 300, 14801, 0
CreateReportControl "AddressRep_W", acLine, acGroupLevel2Footer, , , _
57, 57, 14801, 0
End If
DoCmd.Close acReport, "AddressRep_W", acSaveYes
End Sub
※ プログラムのコードはメールマガジンの特性上、横のカラムが長く出来ないため
結合子( _ )で複数行に分割していますが、1行で記述しても構いません。
今回はここまでです。
次回はサブルーチンの続きで、抽出条件の設定、それから表示順序の設定を行います。
______________________________________
□ お知らせ。
・ホームページの更新について。
都合によりホームページの更新が24日(月曜日)の午後になります。
サンプル等が必要な方は、それ以降アクセス下さいますよう、お願いします。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□
◇ ACCESSで作るシリーズ 【住所録ソフト編】
◇ 発 行 元 :Yoshihisa Fukuda(福田 義久)
◇ ご意見・ご要望
ご質問等 :fukud@nifty.com
◇ このメールマガジンは、インターネットの本屋さん『まぐまぐ』を利用して発行
しています。(まぐまぐID:0000077071)
◇ バックナンバー:http://www.fsc-net.com
◇ 登録・解除 :http://www.fsc-net.com
Copyright(C) 2001-2003 Yoshihisa Fukuda All rights reserved.
◇転載について
このメールマガジンの無断転載などは、一切禁止です。
転載をご希望の方は、事前にメールで連絡をください。
◇免責
このメールマガジン及びホームページの内容による、いかなる損害、障害などに
関して発行者は一切の責任を負いません。
掲載広告についても同様です。
______________________________________
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□