営業所マスタの作成、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
-------------------------------------------------------------------
では、解説します。
営業所マスタの作成の1回目で”問い合わせ処理”が登場しますと
言いました。
今回はさわりの部分になりますが、営業所問い合わせ画面と
営業所画面の連動部分を説明します。
営業所コード_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について
営業所コード上でキーを押した時の処理です。
On Error GoTo Err_営業所コード_KeyDown
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_営業所コード_KeyDown:
Exit Sub
Err_営業所コード_KeyDown:
MsgBox "エラーナンバー " & Err.Number & _
vbCrLf & _
Err.Description, vbCritical, "エラー"
Resume Exit_営業所コード_KeyDown
-*-------*-------*-------*-------*-------*-------*-------*-------*-
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
Else
syorimode = 1
[営業所名] = rs![営業所名]
[カナ名] = rs![カナ名]
[郵便番号] = rs![郵便番号]
[住所1] = rs![住所1]
[住所2] = rs![住所2]
[電話番号] = rs![電話番号]
[FAX番号] = rs![FAX番号]
End If
rs.Close
Set rs = Nothing
Set pm = Nothing
Set cm = Nothing
[営業所名].Enabled = True
[カナ名].Enabled = True
[郵便番号].Enabled = True
[住所1].Enabled = True
[住所2].Enabled = True
[電話番号].Enabled = True
[FAX番号].Enabled = True
[btn取消].Enabled = True
[btn登録].Enabled = True
[btn取消].Enabled = True
If syorimode = 0 Then
[btn削除].Enabled = False
Else
[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で作るクラサバシステム ◆
Accessで困ったと思ったなら、Accessで作るクラサバシステムをお勧めします
編集・構成:高橋浩
提供・発行:ティウェア
http://www.1tware.com/index.html
Access2000+MSDE2000、Access2002+MSDE2000、Access2003+MSDE2000で
作る販売管理ソフト、クライアントサーバーシステムを構築
※当メールマガジンに掲載された記事を許可なく転載することを禁じます。
===================================================================
実践テクニック、Accessで作るクラサバシステム(隔週 火曜日発行中)
SEが10年以上の開発ノウハウを惜しみなく完全公開!
|