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

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



2006/08/22配信
 

第7コース  第11回 「商品マスタの作成」




 

 ■メニュー

       1.商品マスタの作成(7回目)

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

 商品マスタの作成、7回目です。
 第7コースの最終となります。

 では、はじめましょう。

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

 今回は、表示させた問い合わせから商品マスタメンテナンスに
 データを移行させる処理とボタンの解説となります。


 商品コード、商品名、売上単価、仕入単価、区分名に共通する
 処理となります。
 
 商品名で解説します。

 マウスを使う場合は、項目上でダブルクリックします。
 キーボードでは、押したボタンで処理をします。

 1.マウスをダブルクリックした処理

 Sub 商品名_DblClickを作成します。


Private Sub 商品名_DblClick(Cancel As Integer)
On Error GoTo Err_商品名_DblClick

If IsNull([商品コード]) Or Trim([商品コード]) & "" = "" Then
Exit Sub
End If

p_syocd = [商品コード]

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

Forms(form_modoriname).Controls(form_modoricontrols_name_1) _
= Format$(p_syocd, "00000000")

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

Forms(form_modoriname).Controls( _
form_modoricontrols_name_setfocus).SetFocus

DoCmd.Close

DoCmd.OpenForm form_modoriname

Exit_商品名_DblClick:
Exit Sub

Err_商品名_DblClick:
MsgBox "エラーナンバー " & Err.Number & _
vbCrLf & _
Err.Description, vbCritical, "エラー"

Resume Exit_商品名_DblClick

End Sub


 1-1.◎ポイント解説 1 について
   
   問い合せ画面で選択した商品コードを商品マスタメンテナンス
   の商品コードへに送る処理です。

   form_modoriname = "商品マスタメンテナンス"
   form_modoricontrols_name_1 = "商品コード"
   それぞれの項目が入っています。

   フォーム名を定数にいれてる場合は”.Controls”という
   使い方をします。
   そのフォームの項目である商品コードに送ります。

   その際、コードは2桁ですから Format$(p_syocd, "00000000") 
   でフォーマットしています。


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

   form_modoricontrols_name_setfocus = "商品コード"
   が入っています。

   戻りフォームにセットフォーカスしている処理です。
   もちろん、商品マスタメンテナンスの商品コードです。

   自分自身(問い合せ画面)をクローズして商品マスタメンテナンス
   をオープンします。

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


 2.キーボードを押した場合の処理です。

  Sub 商品名_KeyDownを作成します。

  この処理は、商品名_DblClickとほぼ同じです。
  違うのは、KeyCode<>123 は、F12でなければということです。
  F12キー以外で商品コードはスペースかNullでなければ
  処理を行います。

On Error GoTo Err_商品名_KeyDown

If KeyCode <> 123 Then
Exit Sub
End If

If IsNull([商品コード]) Or Trim([商品コード]) & "" = "" Then
Exit Sub
End If

p_syocd = [商品コード]

Forms(form_modoriname).Controls(form_modoricontrols_name_1) = _
Format$(p_syocd, "00000000")

Forms(form_modoriname).Controls( _
form_modoricontrols_name_setfocus).SetFocus

DoCmd.Close

DoCmd.OpenForm form_modoriname

Exit_商品名_KeyDown:
Exit Sub

Err_商品名_KeyDown:
MsgBox "エラーナンバー " & Err.Number & _
vbCrLf & _
Err.Description, vbCritical, "エラー"

Resume Exit_商品名_KeyDown

End Sub

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

 3.五十音のボタンについて
  
  ”あ”〜”ん”などのボタンを作りました。
  各ボタン共通です。
  mojiの部分に送ることばが違うだけです。
  ”あ”のボタンを作ります。

  3-1.btnあ_Clickについて

moji = "あ"
ひらがな処理

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

  3-2.ひらがな処理について

If Trim(moji) = "あ" Then
[カナ名] = [カナ名] & "ア"
GoTo job99
End If

If Trim(moji) = "い" Then
カナ名 = カナ名 & "イ"
GoTo job99
End If

 「省略」

If Trim(moji) = "ー" Then
カナ名 = カナ名 & "ー"
GoTo job99
End If

job99:

Call 検索処理


  *注意
   メルマガでは、半角カタカナは不正文字となりますので
   全角文字で解説します。
   カナ名に入る文字は半角カタカナとなります。


  "あ"の場合、[カナ名]に [カナ名] & "ア" を送ります。
  その後、job99に飛んでCall 検索処理を行います。

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

 4.btn1字消去について

  カナ名(テキストボックス)項目を1文字を消去する
  ボタンの処理です。

  btn1字消去_Click()を作成します。


If IsNull([カナ名]) Or Trim([カナ名]) & "" = "" Then
mojisu = Int(0)
Else
mojisu = Len([カナ名])
End If

If mojisu <= Int(1) Then
[カナ名] = ""
Set Me.Recordset = Nothing
Me![商品コード].ControlSource = ""
Me![商品名].ControlSource = ""
Me![消費税区分名].ControlSource = ""
Me![売上単価].ControlSource = ""
Me![仕入単価].ControlSource = ""
カナ名.SetFocus
Exit Sub
End If

If mojisu >= Int(2) Then
[カナ名] = Left([カナ名], mojisu - Int(1))
Call 検索処理
Exit Sub
End If

商品コードに入力されているカナを1文字削除する処理です。 

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

 5.btn全消去について

  カナ名(テキストボックス)項目をすべて消去するボタンの処理です

  btn全消去_Click()を作成します。

カナ名 = ""
Set Me.Recordset = Nothing
Me![商品コード].ControlSource = ""
Me![商品名].ControlSource = ""
Me![消費税区分名].ControlSource = ""
Me![売上単価].ControlSource = ""
Me![仕入単価].ControlSource = ""
カナ名.SetFocus

 このボタンは商品コードに入力された文字をすべてクリアする処理です

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

 6.btn全表示について

  カナ名(テキストボックス)項目に入力せず、すべてデータを表示
  させるボタンの処理です。

  btn全表示_Click()を作成します。

Set rs = New ADODB.Recordset
SqlStr = ""
SqlStr = "select 商品コード,商品名,消費税区分名,売上単価, _
仕入単価 from 商品マスタ"
SqlStr = SqlStr & " order by 商品マスタ.カナ名, _
商品マスタ.商品コード"

rs.Open SqlStr, cn, adOpenStatic

If rs.BOF Then
Set Me.Recordset = Nothing
Me![商品コード].ControlSource = ""
Me![商品名].ControlSource = ""
Me![消費税区分名].ControlSource = ""
Me![売上単価].ControlSource = ""
Me![仕入単価].ControlSource = ""
Else
Set Me.Recordset = rs
Me![商品コード].ControlSource = rs![商品コード].name
Me![商品名].ControlSource = rs![商品名].name
Me![消費税区分名].ControlSource = rs![消費税区分名].name
Me![売上単価].ControlSource = rs![売上単価].name
Me![仕入単価].ControlSource = rs![仕入単価].name
End If

rs.Close
Set rs = Nothing

 この処理は、登録されているすべてのデータを画面に表示させます。
 SQL文にwhereがないのですべてのデータが現れます。

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

 7.btn終了について

  処理を終了してここでは、商品マスタメンテナンスに戻る
  ボタンの処理です。

 btn終了_Click()を作成します。

On Error GoTo Err_btn終了_Click

DoCmd.Close

DoCmd.OpenForm form_modoriname

Exit_btn終了_Click:
Exit Sub

Err_btn終了_Click:
MsgBox "エラーナンバー " & Err.Number & _
vbCrLf & _
Err.Description, vbCritical, "エラー"

Resume Exit_btn終了_Click

 問い合わせ画面を終了することは、元の画面に戻るということです。
 つまり、商品マスタメンテナンスに戻るわけです。


 商品データのすべてを渡す必要はありません。
 問い合わせで取得したデータ、ここでは商品コードです。
 それさえわかれば、メンテナンスの方で読み込みをすればよいのです。

 何が必要なのか、どれを渡せばよいのかを考えて作ってください。
 スピード面も考えて受け渡すデータは、最小限にする必要があります。

着実にシステムの開発は進んでいるでしょうか?
 お役に立てていればうれしいのですが・・・。
 第7コースはこれで終了です。

 次回から第8コースの始まります、ご期待ください。

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

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