前回に続き会社マスタメンテナンスの作成をします。
基本的な流れは以前説明した”コントロールマスタの作成”と同じです。
では、始めましょう。
-------------------------------------------------------------------
1.登録ボタンを押すことにより、会社マスタの登録処理を行います。
1−1.具体的な流れ
このマスタは売上伝票、納品書、請求書に会社名、住所等を
記述するためのものです。
それで削除の処理はありません。
読み込んだ時のsyorimodeにより、登録処理なのか変更処理なのか
判断しています。
登録時にエラーが発生エラーナンバーを知らせます。
会社は1レコードしか存在しません。
正常終了すれば、マスタメンテナンスのメニューに戻ります。
'登録確認(有り)の処理は、ボタンを押した時、実行するか
しないかをMsgBoxで表示させています。
これはあるマスタに各ボタンに対して確認画面を表示させるか
しないかを保存させているのです。
inttouroku = 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−2.会社_更新の処理です。
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(, adVarChar, adParamInput,
20, [代表者名])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
40, [会社名])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
10, [郵便番号])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
60, [住所1])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
60, [住所2])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
16, [電話番号])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
16, [FAX番号])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
60, [振込先1])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
60, [振込先2])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
60, [振込先3])
.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
2−3.会社_更新の処理です。
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(, adVarChar, adParamInput,
20, [代表者名])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
40, [会社名])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
10, [郵便番号])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
60, [住所1])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
60, [住所2])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
16, [電話番号])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
16, [FAX番号])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
60, [振込先1])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
60, [振込先2])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
60, [振込先3])
.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 sp_会社マスタ_ins
(
@会社コード smallint,
@代表者名 varchar (20),
@会社名 varchar (40),
@郵便番号 varchar (10),
@住所1 varchar (60),
@住所2 varchar (60),
@電話番号 varchar (16),
@FAX番号 varchar (16),
@振込先1 varchar (60),
@振込先2 varchar (60),
@振込先3 varchar (60)
)
As
insert into 会社マスタ
(会社コード,代表者名,会社名,郵便番号,住所1,住所2,電話番号,FAX番号,振込先1,振込先2,振込先3)
values
(@会社コード,@代表者名,@会社名,@郵便番号,@住所1,@住所2,@電話番号,@FAX番号,@振込先1,@振込先2,@振込先3)
return
-------------------------------------------------------------------
4.会社マスタ変更時のストアドプロシジャです。
upd_modeが、1の場合、会社マスタのデータを変更します。
VBAに記述した項目配列とストアドプロシジャの配列は同じ
ものでなくてはいけません。
ALTER Procedure sp_会社マスタ_upd
(
@会社コード smallint,
@代表者名 varchar (20),
@会社名 varchar (40),
@郵便番号 varchar (10),
@住所1 varchar (60),
@住所2 varchar (60),
@電話番号 varchar (16),
@FAX番号 varchar (16),
@振込先1 varchar (60),
@振込先2 varchar (60),
@振込先3 varchar (60)
)
As
update 会社マスタ
set
会社コード=@会社コード,代表者名=@代表者名,会社名=@会社名,郵便番号=@郵便番号,住所1=@住所1,住所2=@住所2,電話番号=@電話番号,FAX番号=@FAX番号,振込先1=@振込先1,振込先2=@振込先2,振込先3=@振込先3
where 会社コード = @会社コード
return
-------------------------------------------------------------------
5.終了ボタンの処理
intsyuuryou = 1
Private Sub btn終了_Click()
If intsyuuryou = 1 Then '終了確認(有り)
If MsgBox(Forms(cFormName_M).Caption & "を終了しますか" &
Chr(13) & _
Chr(13) & "登録ボタンを押さずに、終了すると内容は保存されません", _
(vbYesNo + vbDefaultButton2 + vbInformation), "終了") =
vbYes Then
Else
DoCmd.GoToControl "会社名"
Exit Sub
End If
End If
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
次回も会社マスタの作成です。
===================================================================
◆
実践テクニック、Accessで作るクラサバシステム ◆
Accessを身につけるハウツー法は、このメルマガです
編集・構成:高橋浩
提供・発行:ティウェア
http://www.1tware.com/index.html
Access2000+MSDE2000、Access2002+MSDE2000、Access2003+MSDE2000で
作る販売管理ソフト、クライアントサーバーシステムを構築
※当メールマガジンに掲載された記事を許可なく転載することを禁じます。
===================================================================
実践テクニック、Accessで作るクラサバシステム(隔週 火曜日発行中)
SEが10年以上の開発ノウハウを惜しみなく完全公開!
|