Access(ADP & VBA)とMSDEで作るクライアントサーバーシステム(c/s)

 
実践テクニック、Accessで作るクラサバシステム



2006/05/16配信
 

第7コース  第4回 「担当者マスタリストの作成」




 

 ■メニュー

   1.担当者マスタリストの作成(4回目)

===================================================================

 ■バックナンバーの無料公開について

 今もなお、”バックナンバーは公開してないのですか?”
 というメールを頻繁に頂きます。
 バックナンバーは有料販売すると以前メルマガで告知しました。
 その準備もしていたのですが・・・。

 1人でも多くの方に作ってもらいたいと思い無料で公開することに
 致しました。
 何といっても69ページに及ぶ量です、土日返上で作成しました。
 本当、疲れました。
 (もし、リンクに不具合があったら教えてください)

 現在、ホームページでしか公開していません。

 バックナンバーで販売管理ソフトを完成させましょう!!

 読まなくてもよいのかなコーナーもあります。
 ”VB.NETをさわった感想”です。
 はじめて使ったVB.NETの感想を書いています。
 VB.NETとVB6.0の違いも。興味がある方は読んでください。

-------------------------------------------------------------------

 ■お知らせ

 販売管理ソフトをお買い上げのお客さまへ

 販売管理ソフトのヘルプに記述されている郵便番号をダウンロードする
 リンク先が変更になっていますのでお知らせします。

http://www.post.japanpost.jp/zipcode/download.html
 上記ページにある下記の1、2のどちらでも構いません。
 その他の記述は、販売管理ソフトのヘルプでご確認ください。

 1.読み仮名データの促音・拗音を小書きで表記しないもの
http://www.post.japanpost.jp/zipcode/dl/oogaki.html

 2.読み仮名データの促音・拗音を小書きで表記するもの
http://www.post.japanpost.jp/zipcode/dl/kogaki.html

 リンク切れは、よくあることです。
 こちらも気がつけばお知らせしたいと思います。
 ほかに気がついたことがあれば教えてください。


 では、はじめましょう。

 担当者マスタリストの作成、4回目です。

-*-------*-------*-------*-------*-------*-------*-------*-------*-


Option Compare Database
Option Explicit に下記を記述してください。

Const cFormName_M = "担当者マスタリスト"
Const cReportName_M = "r_担当者マスタリスト"

'行カウンター
Dim line_count As Integer

-*-------*-------*-------*-------*-------*-------*-------*-------*-

 1.Report_Openについて


'◎ポイント解説 1 について  -----*-----*-----*-----

Reports(cReportName_M).RecordSource = t_RecordSource

'◎ポイント解説 2 について  -----*-----*-----*-----

Win_Maximize


 1-1.◎ポイント解説 1 について

  前回、印刷処理()に記述しました。
  t_RecordSource = "rp_sp_担当者マスタリスト"
  のストアドプロシージャをどのようにして渡すのか?

  "r_担当者マスタリスト"のレポートのRecordSourceに渡します。

 1-2.◎ポイント解説 2 について

  プレビュー表示を最大化する処理です。
  そのモジュールが下記になります。

Sub Win_Maximize()
On Error GoTo Win_Maximize_Err

DoCmd.Maximize

Win_Maximize_Exit:

Exit Sub

Win_Maximize_Err:

MsgBox Error$
Resume Win_Maximize_Exit

End Sub

-*-------*-------*-------*-------*-------*-------*-------*-------*-


 2.ページヘッダーセクション_Printについて


line_count = Int(0)

[印刷日付] = DateSerial(Forms(cFormName_M)![印刷年], _
Forms(cFormName_M)![印刷月], Forms(cFormName_M)![印刷日]) _
& " " & Forms(cFormName_M)![印刷時間]

If Forms(cFormName_M)![印刷順] = 1 Then
[repo印刷順] = "カナ名順"
Else
[repo印刷順] = "担当者コード順"
End If


 行カウターのline_count をゼロにします。

-*-------*-------*-------*-------*-------*-------*-------*-------*-

 3.詳細_Formatについて


'◎ポイント解説 3 について  -----*-----*-----*-----

line_count = line_count + Int(1)
Call 明細行着色(cReportName_M, line_count, 0, 0, "")


 3-1.◎ポイント解説 3 について

  明細行のBackColorに着色をさせます。

  ページヘッダーセクション_Printでline_countにゼロをいれています。
  詳細_Formatでline_countに1ずつカウントアップします。

  明細行着色のモジュールは、単に背景色を設定するためだけに
  使用するのではありません。
  納品書、請求書には線に色をつける処理もさせています。
  色を濃くしたり薄くしたり。

  ここでは、
  Call 明細行着色(cReportName_M, line_count, 0, 0, "")
  となっています。

  ポイントは、line_countの数値により背景を換えているところです。
  互い違いに白、薄い灰色にさせています。

  明細行着色は、 p_line_count Mod 2 で判断します。
  Modは、2つの数値の除算を行い、その剰余を返します。
  result = number1 Mod number2

  余りが1なら、BackColorを白色にします。
  余りが0なら、BackColorを薄い灰色にします。

  p_line_countには、足しこまれた値が入りますが、2で割ると
  必ず、0か1を返します。
  それを利用します。

  Modの演算子はよく使います。
  覚えておくと、とても便利です。


明細行着色のモジュール

Sub 明細行着色(p_cReportName_M As String, p_line_count As Integer, _
p_intSectionNumber As Integer, p_sw As Integer, p_iro As String)

Dim iro_RGB As Long

If p_sw = 0 Then
iro_RGB = RGB(227, 227, 227) '薄い灰色
Else
If p_sw = 1 Then
Select Case p_iro
Case "青"
iro_RGB = RGB(0, 0, 255)
Case "緑"
iro_RGB = RGB(0, 255, 0)
Case "赤"
iro_RGB = RGB(255, 0, 0)
Case "黒"
iro_RGB = RGB(0, 0, 0)
Case "灰"
iro_RGB = RGB(192, 192, 192)
Case "茶"
iro_RGB = RGB(128, 0, 0)
Case "水"
iro_RGB = RGB(0, 255, 255)
Case Else
'黒
iro_RGB = RGB(0, 0, 0)
End Select
Else
If p_sw = 2 Then
Select Case p_iro
Case "青"
iro_RGB = RGB(232, 232, 255)
Case "緑"
iro_RGB = RGB(221, 255, 221)
Case "赤"
iro_RGB = RGB(255, 223, 223)
Case "黒"
iro_RGB = RGB(227, 227, 227)
Case "灰"
iro_RGB = RGB(227, 227, 227)
Case "茶"
iro_RGB = RGB(255, 223, 223)
Case "水"
iro_RGB = RGB(215, 255, 255)
Case Else
'黒
iro_RGB = RGB(227, 227, 227)
End Select
End If
End If
End If

If p_line_count Mod 2 Then
Reports(p_cReportName_M).Section(p_intSectionNumber).BackColor = _
16777215 '白色
Else
Reports(p_cReportName_M).Section(p_intSectionNumber).BackColor = _
iro_RGB '薄い灰色
End If

End Sub

-*-------*-------*-------*-------*-------*-------*-------*-------*-

 4.Report_NoDataについて

MsgBox "印刷すべきデータがありません", vbExclamation, "印刷警告"
Cancel = True

Forms(cFormName_M)![印刷順].SetFocus


 印刷するデータがない場合の処理です。

 MsgBoxで"印刷すべきデータがありません"と確認させます。

 "担当者マスタリスト"の[印刷順]にフォーカスを移動させます。

 Cancel = True は何をしているか?

 これがないとデータが1つもないのに印刷されます。
 見出しと罫線のみの名称マスタリストが1枚プリンターから出てきます。

 用紙がもったいない、もったいない。

 データがないのなら、フォームに直接戻す処理をさせます。
 印刷させない。
 それが Cancel = True です。

 何度も使う処理はモジュール化してどんどん使いましょう!
 明細行着色のモジュールを自分なりに使いやすいように
 工夫して下さい。

 担当者マスタリストは、これで終了です。

 物にもよりますが、レポートでもVBAで記述しなければいけません。
 でも、極力記述するのを省けるように作りましょう。

 フォームでもレポートでもゴリゴリと記述するのはやめましょう。
 レポートは、飾りをつける罫線を引く色をつけるなどに留め。

 ”レポートは印刷させるだけ”とシンプルに考えて作ることです。
 シンプルオブベストが一番。

===================================================================

                ◆ 実践テクニック、Accessで作るクラサバシステム ◆

  編集・構成:高橋浩
  提供・発行:ティウェア

http://www.1tware.com/index.html

Access2000+MSDE2000、Access2002+MSDE2000、Access2003+MSDE2000で
作る販売管理ソフト、クライアントサーバーシステムを構築

※当メールマガジンに掲載された記事を許可なく転載することを禁じます。

===================================================================

実践テクニック、Accessで作るクラサバシステム(隔週 火曜日発行中)

SEが10年以上の開発ノウハウを惜しみなく完全公開!

Mail:  (半角英数字)     Powered byまぐまぐ


HOME / お客様の声 / メルマガ / 販売管理ソフト教材 / 会社概要/ 特定商取引法/ お申し込み
 お問い合わせ / メルマガのご意見ご感想 / メルマガのバックナンバー/ プライバシーポリシー
 


 Copyright (c) 2001 ティウェア All rights reserved.