前回に続きコントロールマスタの作成です。
1.登録ボタンを押すことにより、コントロールマスタの登録、
変更処理を行います。
1−1.具体的な流れ
項目の数字のチェック、項目のチェックを正常に処理されていれば
登録の処理に移行します。
もし、項目にエラーが存在すれば、項目の訂正を作業者に知らせます。
読み込んだ時のsyorimodeにより、登録処理なのか変更処理なのか
判断しています。
登録時にエラーが発生エラーナンバーを知らせます。
正常終了すれば、マスタメンテナンスのメニューに戻ります。
なぜなら、コントロールマスタは1レコードしか存在しません。
だから登録、変更処理が終了すればメニューに戻るという事です。
では、登録ボタンを押した場合の処理を記述します。
Private Sub btn登録_Click()
p_moname = ""
If 数字chk() Then
Else
Exit Sub
End If
If chk項目() Then
Else
Exit Sub
End If
If inttouroku = 1 Then '登録確認(有り)
If MsgBox("登録しますか", (vbYesNo + vbDefaultButton2 +
vbInformation),
"登録") = vbYes Then
Else
DoCmd.GoToControl "消費税商品コード"
Exit Sub
End If
End If
Select Case syorimode
Case 0 '登録処理
intRet = コントロール_更新(0)
Case 1 '変更処理
intRet = コントロール_更新(1)
End Select
On Error GoTo Err_btn登録_Click
DoCmd.Close
DoCmd.OpenForm "m_マスタメンテナンス処理メニュー"
Exit_btn登録_Click:
Exit Sub
Err_btn登録_Click:
MsgBox "エラーナンバー " & Err.Number & _
vbCrLf & _
Err.Description, vbCritical, "エラー"
Resume Exit_btn登録_Click
End Sub
-------------------------------------------------------------------
2.コントロールの更新処理です。
できれば、同じような処理であれば、まとめた方がプログラム
ソースがすっきりします。
今回は、登録、変更処理をFunctionで処理します。
upd_modeに送られた数字により処理を別けています。
2−1.具体的な流れ
upd_modeが、0の場合、コントロールマスタのデータを登録します。
upd_modeが、1の場合、コントロールマスタのデータを変更します。
各画面項目からデータ項目に送っていきます。
2−1.1項目だけ説明します。
Set pm = .CreateParameter(, adSmallInt, adParamInput,
, [コントロールコード])
.Parameters.Append pm
CreateParameterからParameterコレクションを生成します。
SmallInt型はパラメータですので、sizeの指定はしません。
生成されたParameterはParametersコレクションに加えていきます。
これの繰り返しになります。
cm.Executeの実行により、upd_modeの代入された数字により
sp_コントロールマスタ_insかsp_コントロールマスタ_updかどちらかが
実行されます。
Function コントロール_更新(upd_mode As Integer)
コントロール_更新 = True
On Error GoTo コントロール_更新_err
Set cm = New ADODB.Command
Set pm = New ADODB.Parameter
With cm
.ActiveConnection = cn
.CommandType = adCmdStoredProc
If upd_mode = 0 Then
.CommandText = "sp_コントロールマスタ_ins"
Else
.CommandText = "sp_コントロールマスタ_upd"
End If
Set pm = .CreateParameter(, adSmallInt, adParamInput,
, [コントロールコード])
.Parameters.Append pm
Set pm = .CreateParameter(, adInteger, adParamInput, ,
[売上伝票番号])
.Parameters.Append pm
Set pm = .CreateParameter(, adInteger, adParamInput, ,
[入金伝票番号])
.Parameters.Append pm
Set pm = .CreateParameter(, adDate, adParamInput, ,
[当期初日])
.Parameters.Append pm
Set pm = .CreateParameter(, adDate, adParamInput, ,
[当期決算日])
.Parameters.Append pm
Set pm = .CreateParameter(, adDate, adParamInput, ,
[当月初日])
.Parameters.Append pm
Set pm = .CreateParameter(, adDate, adParamInput, ,
[当月末日])
.Parameters.Append pm
Set pm = .CreateParameter(, adInteger, adParamInput, ,
[消費税商品コード])
.Parameters.Append pm
Set pm = .CreateParameter(, adCurrency, adParamInput,
, [消費税])
.Parameters.Append pm
Set pm = .CreateParameter(, adDate, adParamInput, ,
[新消費税開始日付])
.Parameters.Append pm
Set pm = .CreateParameter(, adCurrency, adParamInput,
, [新消費税])
.Parameters.Append pm
Set pm = .CreateParameter(, adSmallInt, adParamInput,
, [締日])
.Parameters.Append pm
Set pm = .CreateParameter(, adDate, adParamInput, ,
[締切日])
.Parameters.Append pm
If [売上伝票発行] = "無し" Then
[売上伝票発行] = 0
Set pm = .CreateParameter(, adSmallInt, adParamInput,
, [売上伝票発行])
.Parameters.Append pm
Else
[売上伝票発行] = 1
Set pm = .CreateParameter(, adSmallInt, adParamInput,
, [売上伝票発行])
.Parameters.Append pm
End If
Set pm = .CreateParameter(, adSmallInt, adParamInput,
, [締次フラグ])
.Parameters.Append pm
Set pm = .CreateParameter(, adSmallInt, adParamInput,
, [月次フラグ])
.Parameters.Append pm
End With
cm.Execute
Set pm = Nothing
Set cm = Nothing
Exit Function
コントロール_更新_err:
For Each ado_err In cn.Errors
MsgBox "エラーナンバー " & ado_err.Number & _
vbCrLf & _
"エラーソース " & ado_err.Source & _
vbCrLf & _
Err.Description, vbCritical, "エラー"
Next
コントロール_更新 = False
Set pm = Nothing
Set cm = Nothing
End Function
-------------------------------------------------------------------
3.コントロールマスタ登録時のストアドプロシジャです。
upd_modeが、0の場合、コントロールマスタのデータを登録します。
VBAに記述した項目配列とストアドプロシジャの配列は同じ
ものでなくてはいけません。
Alter Procedure takahashi.sp_コントロールマスタ_ins
(
@コントロールコード smallint,
@売上伝票番号 int,
@入金伝票番号 int,
@当期初日 datetime,
@当期決算日 datetime,
@当月初日 datetime,
@当月末日 datetime,
@消費税商品コード int,
@消費税 money,
@新消費税開始日付 datetime,
@新消費税 money,
@締日 smallint,
@締切日 datetime,
@売上伝票発行 smallint,
@締次フラグ smallint,
@月次フラグ smallint,
)
As
insert into コントロールマスタ (コントロールコード,売上伝票番号,入金伝票番号,
当期初日,当期決算日,当月初日,当月末日,消費税商品コード,
消費税,新消費税開始日付,新消費税,締日,締切日,売上伝票発行)
values (@コントロールコード,@売上伝票番号,@入金伝票番号,@当期初日,
@当期決算日,@当月初日,@当月末日,@消費税商品コード,@消費税,
@新消費税開始日付,@新消費税,@締日,@締切日,@売上伝票発行)
return
-------------------------------------------------------------------
4.コントロールマスタ変更時のストアドプロシジャです。
upd_modeが、1の場合、コントロールマスタのデータを変更します。
VBAに記述した項目配列とストアドプロシジャの配列は同じ
ものでなくてはいけません。
Alter Procedure takahashi.sp_コントロールマスタ_upd
(
@コントロールコード smallint,
@売上伝票番号 int,
@入金伝票番号 int,
@当期初日 datetime,
@当期決算日 datetime,
@当月初日 datetime,
@当月末日 datetime,
@消費税商品コード int,
@消費税 money,
@新消費税開始日付 datetime,
@新消費税 money,
@締日 smallint,
@締切日 datetime,
@売上伝票発行 smallint,
)
As
update コントロールマスタ
set コントロールコード =
@コントロールコード,売上伝票番号=@売上伝票番号,入金伝票番号=@入金伝票番号,当期初日=@当期初日,当期決算日=@当期決算日,当月初日=@当月初日,当月末日=@当月末日,消費税商品コード=@消費税商品コード,消費税=@消費税,新消費税開始日付=@新消費税開始日付,新消費税=@新消費税,締日=@締日,締切日=@締切日,売上伝票発行=@売上伝票発行
where コントロールコード = @コントロールコード
return
コントロールマスタには、削除処理がありません。
削除処理が理解できれば、データの登録、変更、削除が出来ることになります。
各項目ごとにチェックするのはもちろんのこと、登録ボタンを押すことに
より、すべての項目を一気に調べてエラーになってないかを調査する
必要があります。
===================================================================
◆
実践テクニック、Accessで作るクラサバシステム ◆
問題解決方法は、例題で学ぶことです。
編集・構成:高橋浩
提供・発行:ティウェア
http://www.1tware.com/index.html
Access2000+MSDE2000、Access2002+MSDE2000、Access2003+MSDE2000で
作る販売管理ソフト、クライアントサーバーシステムを構築
※当メールマガジンに掲載された記事を許可なく転載することを禁じます。
===================================================================
実践テクニック、Accessで作るクラサバシステム(隔週 火曜日発行中)
SEが10年以上の開発ノウハウを惜しみなく完全公開!
|