■メニュー
1.商品マスタの作成(3回目)
===================================================================
商品マスタの作成、3回目です。
では、はじめましょう。
-------------------------------------------------------------------
1.削除ボタンの処理
削除ボタンを押すことにより、商品マスタを削除します。
1-1.btn削除_Click()について
'◎ポイント解説 1 -----*-----*-----*-----
If intsakujyo = 1 Then
If MsgBox("データを削除しますか", (vbYesNo + vbDefaultButton2 + _
vbInformation), "削除") = vbYes Then
Else
DoCmd.GoToControl "商品名"
Exit Sub
End If
End If
'◎ポイント解説 2 -----*-----*-----*-----
intRet = 商品_削除()
p_tancd = Int(0)
From_Clr
'◎ポイント解説 3 -----*-----*-----*-----
[商品コード].Enabled = True
[商品コード].Locked = False
[商品コード].BackColor = 16777215 '白色
[商品コード].SetFocus
-------------------------------------------------------------------
では、詳しく解説します。
1-1.◎ポイント解説 1 について
削除ボタンを押して削除する前にコンボボックスを表示させて
再度、削除してもよいのか確認させます。
登録、削除、変更など重要な箇所にはコンボボックスを表示させて
確認を促しましょう。
1-2.◎ポイント解説 2 について
ここが削除処理のメインとなります
intRet = 商品_削除()
1-3.◎ポイント解説 3 について
[商品コード].Enabled = True
[商品コード].Locked = False
[商品コード].BackColor = 16777215 '白色
商品コード(テキスト)の入力が出来る状態にします。
商品コードを入力して存在すれば、取消ボタンを押さない限り
入力できないようにしていますのでここで解除しています。
これは、キーとなる商品コードを勝手に入力できないように
しているためです。
商品コードを間違えた場合は、取消ボタンで再度入力して
処理させればよいのです。
処理が終わればカーソルを商品コードにフォーカスをあてます。
-*-------*-------*-------*-------*-------*-------*-------*-------*-
それでは、intRet = 商品_削除()を解説します。
Function 商品_削除()を作成して下さい。
内容は下記のとおりです。
商品_削除 = True
On Error GoTo 商品_削除_err
Set cm = New ADODB.Command
Set pm = New ADODB.Parameter
pm.Direction = adParamInput
pm.Type = adInteger
pm.Value = [商品コード]
With cm
.ActiveConnection = cn
.CommandType = adCmdStoredProc
'◎ポイント解説 4 -----*-----*-----*-----
.CommandText = "sp_商品マスタ_del"
.Parameters.Append pm
End With
cm.Execute
Set pm = Nothing
Set cm = Nothing
Exit Function
商品_削除_err:
'◎ポイント解説 5 -----*-----*-----*-----
For Each ado_err In cn.Errors
If ado_err.Number = -2147217900 Then
MsgBox "このコードは他のデータで使用されているので_
削除できません。", vbCritical, "警告"
GoTo 商品_削除_err99
Else
MsgBox "エラーナンバー " & ado_err.Number & _
vbCrLf & _
"エラーソース " & ado_err.Source & _
vbCrLf & _
Err.Description, vbCritical, "エラー"
End If
Next
商品_削除_err99:
商品_削除 = False
Set pm = Nothing
Set cm = Nothing
-------------------------------------------------------------------
では、説明します。
1-4.◎ポイント解説 4 について
商品マスタの削除の処理となります。
"sp_商品マスタ_del"のストアドプロシージャを実行します。
ALTER Procedure sp_商品マスタ_del
(
@商品コード int
)
As
delete 商品マスタ
where 商品コード = @商品コード
return
削除する場合には、必ずコードをして下さい。
ここでは、where 商品コード = @商品コードとなります。
何度も書いていますが、whereがないと商品マスタの全ての
データがクリアされますので十分注意してください。
1-5.◎ポイント解説 5 について
ado_err.Numberが”-2147217900”の場合リレーションの関係エラー
となります。
リレーションの関係ができていることが前提です。
警告のMsgBoxを表示させて注意を促します。
MsgBox "このコードは他のデータで使用されているので_
削除できません。", vbCritical, "警告"
-------------------------------------------------------------------
2.取消ボタンの処理
取消ボタンを押すことにより、商品マスタの処理を中止します。
2-1.btn取消_Click()について
p_tancd = Int(0)
From_Clr
Me![商品コード].SetFocus
取消の処理は初期の状態に戻します。
From_Clrで各項目を空白等にします。
処理を終了して商品コードにフォーカスをあてます。
-------------------------------------------------------------------
3.終了ボタンの処理
商品マスタの処理を終了してマスタメンテナンス処理メニュー
に移動させます。
3-1.btn終了_Click()について
If IsNull([商品コード]) Or Trim([商品コード]) & "" = "" Then
DoCmd.Close
DoCmd.OpenForm "m_マスタメンテナンス処理メニュー" ' 3-1
Exit Sub
End If
On Error GoTo Err_btn終了_Click
DoCmd.Close
DoCmd.OpenForm "m_マスタメンテナンス処理メニュー" ' 3-2
Exit_btn終了_Click:
Exit Sub
Err_btn終了_Click:
MsgBox "エラーナンバー " & Err.Number & _
vbCrLf & _
Err.Description, vbCritical, "エラー"
Resume Exit_btn終了_Click
終了ボタンを押すと、マスタメンテナンスメニュー画面に移動します。
*注意
3-1と3-2の”マスタメンテナンス”の部分を半角にしてください。
メルマガでは全角でないとエラーになりますのでこのような記述に
しています。
-------------------------------------------------------------------
4.From_Clrの処理
商品マスタの画面項目をクリアします。
登録、削除、取消の処理で使用されています。
Sub From_Clr()を作成して下さい。
[商品コード].Enabled = True
[商品コード].Locked = False
[商品コード].BackColor = 16777215 '白色
[商品名].Enabled = False
[カナ名].Enabled = False
[売上単価].Enabled = False
[仕入単価].Enabled = False
[単位].Enabled = False
[大分類].Enabled = False
[中分類].Enabled = False
[消費税区分].Enabled = False
If p_syocd = Int(0) Then
[商品コード] = ""
Else
[商品コード] = p_syocd
p_syocd = Int(0)
End If
[商品名] = ""
[カナ名] = ""
[売上単価] = CCur(0)
[仕入単価] = CCur(0)
[単位] = ""
[大分類] = ""
[中分類] = ""
[消費税区分] = ""
daicd = Int(0)
cyucd = Int(0)
商品コードを入力できる状態にします。
各項目に初期値を送っています。
メンテナンスもパターン化しています。
パターン化することは、開発速度を上げる上でも大切なことです。
それとひとつのパターンが完璧にできれば不具合も少なくなります。
自分が得意なパターンに持ち込んでプログラムを作ってください。
次回も、商品マスタの作成です。
===================================================================
◆
実践テクニック、Accessで作るクラサバシステム ◆
編集・構成:高橋浩
提供・発行:ティウェア
http://www.1tware.com/index.html
Access2000+MSDE2000、Access2002+MSDE2000、Access2003+MSDE2000で
作る販売管理ソフト、クライアントサーバーシステムを構築
※当メールマガジンに掲載された記事を許可なく転載することを禁じます。
===================================================================
実践テクニック、Accessで作るクラサバシステム(隔週 火曜日発行中)
SEが10年以上の開発ノウハウを惜しみなく完全公開!
|