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

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



2006/10/03配信
 

第8コース  第3回 「商品マスタリストの作成」




 

 ■メニュー

   1.商品マスタリストの作成(3回目)

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

 こんにちは、ティウェアの高橋です。

 今回で80号となりました。
 みなさんのお陰でここまで発行することができました。
 ありがとうございます、とても感謝しています。

 さあ、商品マスタリストの作成の3回目です。

 では、はじめましょう。

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

 1.印刷ボタンについて


  1-2.btn印刷_Click()

If intinsatu = 1 Then
If MsgBox("印刷を開始しますか", (vbYesNo + vbDefaultButton2 + _
vbInformation), "印刷") = vbYes Then
Else
[印刷順].SetFocus
Exit Sub
End If
End If

intRet = 印刷処理(2)


  印刷をするのかMsgBoxで確認させます。
  ”はい”を押すと印刷処理(2)を処理させます。

  1-3.MsgBoxについて

   MsgBox関数

   メッセージボックスを表示しユーザーの応答を待ちます。

    MsgBox(メッセージ,ボタンとアイコン,タイトル)

   メッセージ:表示するメッセージ
   ボタンとアイコン:ボタンとアイコンを指示
   タイトル:タイトルバーの文字列

   分類     値 記号        内容

   ボタン 0 vbOKOnly      [OK]ボタンだけ
   の指定 1 vbOKCancel    [OK]と[キャンセル]ボタン
       2 vbAbortRetrylgnore [中止]、[再試行]、
                          [無視]ボタン
       3 vbYesNoCancel    [はい]、[いいえ]、
                          [キャンセル]ボタン
       4 vbYesNo          [はい]、[いいえ]ボタン
       5 vbRetryCancel     [再試行]、[キャンセル]ボタン

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

 2.印刷処理()について

Functionで印刷処理を作成して下さい。

Function 印刷処理(insatu_sentaku As Integer) As Integer

'◎ポイント解説 1  -----*-----*-----*-----

'insatu_sentaku(1:プレビュー、2:印刷)

If 印刷順.Value = 1 Then
'カナ名順(1)
Forms(cFormName_M)![sta商品コード] = 0
Forms(cFormName_M)![end商品コード] = 99999999
If IsNull(Forms(cFormName_M)![staカナ名]) Or _
Trim(Forms(cFormName_M)![staカナ名]) & "" = "" Then
Forms(cFormName_M)![staカナ名] = " "
End If
If IsNull(Forms(cFormName_M)![endカナ名]) Or _
Trim(Forms(cFormName_M)![endカナ名]) & "" = "" Then
Forms(cFormName_M)![endカナ名] = "ンンンンンンンン"
Else
Forms(cFormName_M)![endカナ名] = _
Forms(cFormName_M)![endカナ名] & "ンンンンンンンン"
Forms(cFormName_M)![endカナ名] = _
Left$(Forms(cFormName_M)![endカナ名], 40)
End If
t_RecordSource = "rp_sp_商品マスタリスト_カナ順"
Else
'商品コード順(2)
Forms(cFormName_M)![staカナ名] = " "
Forms(cFormName_M)![endカナ名] = "ンンンンンンンン"
t_RecordSource = "rp_sp_商品マスタリスト_コード順"
End If

On Error GoTo Err_印刷処理

Dim stDocName As String

stDocName = "r_商品マスタリスト"

If insatu_sentaku = 1 Then

'プレビュー
'◎ポイント解説 2  -----*-----*-----*-----

DoCmd.OpenReport stDocName, acPreview
DoCmd.RunCommand 245
Else

'印刷の処理
'◎ポイント解説 3  -----*-----*-----*-----

Call prtReport(stDocName, cnsA4, cns横, 2)
End If

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

Exit_印刷処理:
Exit Function

Err_印刷処理:

'◎ポイント解説 4  -----*-----*-----*-----

If Err = 2501 Then
DoCmd.Close acReport, stDocName, acSaveNo
Application.Echo True
Else
MsgBox "エラーナンバー " & Err.Number & _
vbCrLf & _
Err.Description, vbCritical, "エラー"
End If

Resume Exit_印刷処理

  注意:"ンンンンンンンン"は、半角になります。
     メルマガは半角の記述にすると文字化けします。
     そんな理由で全角にしています。

では、解説です。


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

  insatu_sentakuが1ならプレビューを表示させます。
  insatu_sentakuが2なら印刷をさせます。

  rp_sp_商品マスタリスト_カナ順のストアドはどう渡すのか?

  レポートの左上にある黒■(レポートヘッダーの左上)を右クリック
  レポートのデータタグに入力パラメータがあります。
  そこに以下の命令を入れます。つないで一文で入れてください。

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

  印刷の処理になります。

  印刷では、さまざまな問題が発生します。

  プリンターが変わったらレポートを修正したということありませんか?

  プリンターが違ったら、印刷がおかしくなった
  そんな時、モジュールを作っておくと便利なんです。

  Call prtReport(stDocName, cnsA4, cns横, 2)

  モジュールは省略します。

  今回は、"rp_sp_商品マスタリスト_カナ順"でA4用紙で横向きに
  印刷させます。

  "2"のいみですが、印刷時モードのときプレビューを表示させない
  処理です。

  なんと丁寧に印刷をするとプレビューも描画してくれるのです。

  だって、印刷しているのにプレビューを描画させても意味がない。
  なので、表示させないようにしてます。


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

  プレビューの処理です。

  1がプレビューで表示、2がプレビューなしで印刷をします。

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

  Err=2501は印刷データなしのエラーステータスです。
  印刷でメッセージが出たあとに再度Accessのエラーが
  出るための制御をしてます。

  印刷時にデータがない場合デザインビューになります。
  それを防ぐための処理が
  DoCmd.Close acReport, stDocName, acSaveNo

  画面が戻ってこないためにする処理です。
  Application.Echo True

 3.プレビューボタンについて

  1-2.btnプレビュー_Click()

If intpurebyu = 1 Then 'プレビュー確認(有り)
If MsgBox("プレビューを開始しますか", (vbYesNo + vbDefaultButton2 _
+ vbInformation), "プレビュー") = vbYes Then
Else
[印刷順].SetFocus
Exit Sub
End If
End If

intRet = 印刷処理(1)

  プレビューボタンの処理は印刷処理とほとんど同じです。
  印刷処理(1)になり、MsgBoxのメッセージが違うくらいです。


 3.rp_sp_商品マスタリスト_カナ順について

ALTER Procedure rp_sp_商品マスタリスト_カナ順
(
@sta商品コード int,
@end商品コード int,
@staカナ名 varchar (40),
@endカナ名 varchar (40)
)
As
SELECT 商品マスタ.*,
[b_名称マスタ_大分類].大分類名 AS 大分類名,
[b_名称マスタ_中分類].中分類名 AS 中分類名
FROM 商品マスタ LEFT OUTER JOIN
[b_名称マスタ_大分類] ON
商品マスタ.大分類 = [b_名称マスタ_大分類].大分類コード
LEFT OUTER JOIN
[b_名称マスタ_中分類] ON
商品マスタ.中分類 = [b_名称マスタ_中分類].中分類コード
WHERE (商品マスタ.商品コード >= @sta商品コード ) and
(商品マスタ.商品コード <= @end商品コード ) and
(商品マスタ.カナ名 >= @staカナ名 ) and
(商品マスタ.カナ名 <= @endカナ名 )
order by 商品マスタ.カナ名,商品マスタ.商品コード
return

 では、”rp_sp_商品マスタリスト_コード順”のストアドは考えてみてください。

 次回も商品マスタリストの作成です。

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

                ◆ 実践テクニック、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.