■メニュー
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年以上の開発ノウハウを惜しみなく完全公開!
|