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

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



2006/07/11配信
 

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




 

 ■メニュー

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

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

 商品マスタの作成、4回目です。

 商品コードの説明となります。
 商品も問い合わせがあります。

 では、はじめましょう。

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

 1.商品コード_DblClickについて

   商品コード上でダブルクリックをした時の処理です。

   商品コード_DblClick を作成してください。

On Error GoTo Err_商品コード_DblClick

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

[商品コード] = Null

If [商品コード].Enabled = False Then
Exit Sub
End If

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

form_modoriname = "商品マスタメンテナンス"

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

stDocName = "商品問い合せ"

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

form_modoricontrols_name_1 = "商品コード"

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

form_modoricontrols_name_setfocus = "商品コード"

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

Me.Visible = False

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

DoCmd.OpenForm stDocName

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

Forms(stDocName)![カナ名].SetFocus

Exit_商品コード_DblClick:
Exit Sub

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

Resume Exit_商品コード_DblClick

-------------------------------------------------------------------
 では、解説します。

 商品マスタでも問い合わせ処理が登場します。

 商品問い合わせ画面と商品画面の連動部分を説明します。

 商品コード_DblClickとは、商品コード上でダブルクリック
 したアクションとなります。

 これはマウスを使ったときを想定して作成しています。
 同じ処理をファンクションキーでも使えるように対応させています。

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

  ファンクションキーを使用した場合

  1)商品コード_KeyDownを作成する。
  2)商品コード_DblClick記述した内容をそのままコピー。
  3)◎ポイント解説 1 の部分に下記のif分を追加。
   (2、にコードを記述しています)

If KeyCode <> 123 Then
Exit Sub
End If

  KeyCodeが123の場合、問い合せ画面へ移動します。
  ファンクションキーは”F12”になります。

  商品コード上でF12キーを押すと、問い合せ画面へ移動します。


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

   ここでは、戻りフォーム名退避をしています。

   form_modorinameに"商品マスタメンテナンス"を退避。

   商品問い合せ画面に行ったはいいが、戻れないと困ります。

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

   検索問い合せへ移動するためにフォーム名を保存します。

   stDocNameに"商品問い合せ"を保存。

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

   戻りフォーム名退避しています。

   商品マスタメンテナンスの商品コードに値を入れれば
   その内容が画面上に表示されます。

   form_modoricontrols_name_1に"商品コード"を保存。

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

   戻りフォームのセットフォーカス名を退避してます。
   戻ったけど、フォーカスがどっかにいちゃったではいけません。

   form_modoricontrols_name_setfocusに"商品コード"を保存。

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

   商品マスタメンテナンスを消しています。
   商品問い合せ画面が出ているときに商品マスタメンテナンス
   をさわらせないためにしています。

   Me.Visible = False

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

   1-3で説明したがstDocNameには"商品問い合せ"が入っています。
   stDocNameをオープンして商品問い合せ画面を表示させます。

   DoCmd.OpenForm stDocName

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

   商品問い合せ画面のカナ名にセットフォーカスして準備OKです。
   カナを入れれば商品が表示されます。

   カナを入力するの?と思ってませんか?

   50音(あ〜ん)のボタンを配置してますのでマウスでも
   ボタンを押すことにより検索ができます。

Forms(stDocName)![カナ名].SetFocus

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

 2.商品コード_KeyDownについて

   商品コード上でキーを押した時の処理です。
   処理は、商品コード_DblClickと同じです。

On Error GoTo Err_商品コード_DblClick


If KeyCode <> 123 Then
Exit Sub
End If

[商品コード] = Null

If [商品コード].Enabled = False Then
Exit Sub
End If

form_modoriname = "商品マスタメンテナンス"

stDocName = "商品問い合せ"

form_modoricontrols_name_1 = "商品コード"

form_modoricontrols_name_setfocus = "商品コード"

Me.Visible = False

DoCmd.OpenForm stDocName

Forms(stDocName)![カナ名].SetFocus

Exit_商品コード_DblClick:
Exit Sub

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

Resume Exit_商品コード_DblClick

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

 3.商品コード_GotFocusについて

   商品コードにフォーカスが入った時の処理です。

From_Clr_btn

If IsNull([商品コード]) Or Trim([商品コード]) & "" = "" Then
Else
SendKeys "{ENTER}"
End If


  問い合せより戻った場合、商品コードに何かしら入ってると
  SendKeys "{ENTER}"によりENTERキーを押した状態になります。
  これで、次の項目に移動します。

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

 4.商品コード_LostFocusについて

   商品コードからフォーカスが出て行くときの処理です。

syorimode = 0

If IsNull([商品コード]) Or Trim([商品コード]) & "" = "" _
Or [商品コード] = 0 Then
[商品コード] = ""
Exit Sub
Else
Me![商品コード] = Format$(Me![商品コード], "00")
End If

Set cm = New ADODB.Command
Set rs = New ADODB.Recordset
Set pm = New ADODB.Parameter
pm.Direction = adParamInput
pm.Type = adInteger
pm.Value = [商品コード]

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

With cm
.ActiveConnection = cn
.CommandType = adCmdStoredProc
.CommandText = "sp_商品マスタ_get"
.Parameters.Append pm
End With

Set rs = cm.Execute

If rs.EOF Then
syorimode = 0
[ロックフラグ] = MyCompName
Else
[商品名] = rs![商品名]
[カナ名] = rs![カナ名]
[売上単価] = rs![売上単価]
[仕入単価] = rs![仕入単価]
[単位] = rs![単位]
daicd = rs![大分類]
cyucd = rs![中分類]
[大分類] = rs![大分類]
[中分類] = rs![中分類]

If rs![消費税区分] = Int(1) Then
[消費税区分] = "外税"
Else
If rs![消費税区分] = Int(2) Then
[消費税区分] = "内税"
Else
If rs![消費税区分] = Int(3) Then
[消費税区分] = "非課税"
End If
End If
End If
End If

rs.Close

Set rs = Nothing
Set pm = Nothing
Set cm = Nothing

[商品名].Enabled = True
[カナ名].Enabled = True
[売上単価].Enabled = True
[仕入単価].Enabled = True
[単位].Enabled = True
[大分類].Enabled = True
[中分類].Enabled = True
[消費税区分].Enabled = True

If syorimode = 0 Then
[btn削除].Enabled = False
[btnデータ先頭].Enabled = False
[btnデータ後退].Enabled = False
[btnデータ前進].Enabled = False
[btnデータ最終].Enabled = False
Else
[btn削除].Enabled = True
[btnデータ先頭].Enabled = True
[btnデータ後退].Enabled = True
[btnデータ前進].Enabled = True
[btnデータ最終].Enabled = True
End If

[商品名].SetFocus

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

 syorimodeは0:登録、1:変更、削除となります。

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

sp_商品マスタ_getのストアドプロシージャです。

ALTER Procedure sp_商品マスタ_get
(
@商品コード int
)
As
select * from 商品マスタ
where 商品コード = @商品コード
return

 参考になりましたか?

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

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

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