名称マスタの作成です。
今回は、登録処理の説明となります。
-------------------------------------------------------------------
1.登録ボタンの処理
文字chk()、納品書区分チェック()、chk項目()でエラーがないものを
名称マスタに登録します。
syorimodeが"0"の場合、新規登録となります。
名称_更新(0)で処理します。
syorimodeが"1"の場合、変更登録となります。
名称_更新(1)で処理します。
フォームをクリアして、[名称区分コード]にセットフォーカスします。
Private Sub btn登録_Click()
p_moname = ""
If 文字chk() Then
Else
Exit Sub
End If
If Me![名称区分コード] = "納品書見出し" Then
If 納品書区分チェック() Then
Else
Exit Sub
End If
End If
If chk項目() Then
Else
Exit Sub
End If
btn登録_Click_job01:
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
From_Clr
[名称区分コード].Enabled = True
[名称区分コード].Locked = False
[名称区分コード].BackColor = 16777215 '白色
[名称コード].Enabled = True
[名称コード].Locked = False
[名称コード].BackColor = 16777215 '白色
[名称区分コード].SetFocus
End Sub
-------------------------------------------------------------------
2.納品書区分チェックの処理
納品書区分により、1:納品書、2:物品受領書を判断しています。
それ以外はエラーです。
Function 納品書区分チェック()
納品書区分チェック = True
'納品書区分(1:納品書,2:物品受領書)
Select Case Me![納品書区分]
Case "納品書"
nouhin = Int(1)
Case "物品受領書"
nouhin = Int(2)
Case Else
MsgBox "該当しない納品書区分が選択されてます", _
vbExclamation, "注意"
納品書区分チェック = False
Me![納品書区分].SetFocus
Exit Function
End Select
End Function
-------------------------------------------------------------------
3.名称_更新の処理
upd_modeが"0"の場合sp_名称マスタ_insのストアドプロシジャを
行います。
upd_modeが"1"の場合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
If Me![名称区分コード] = "大分類" Then
dencode = Int(1)
Else
If Me![名称区分コード] = "中分類" Then
dencode = Int(2)
Else
If Me![名称区分コード] = "納品書見出し" Then
dencode = Int(3)
Else
If Me![名称区分コード] = "請求書見出し" Then
dencode = Int(4)
Else
If Me![名称区分コード] = "納品書備考" Then
dencode = Int(5)
Else
If Me![名称区分コード] = "請求書備考" Then
dencode = Int(6)
Else
If Me![名称区分コード] = "回収方法" Then
dencode = Int(7)
Else
If Me![名称区分コード] = "単位" Then
dencode = Int(8)
End If
End If
End If
End If
End If
End If
End If
End If
Set pm = .CreateParameter(, adSmallInt, adParamInput,
, dencode)
.Parameters.Append pm
Set pm = .CreateParameter(, adSmallInt, adParamInput,
, _
[名称コード])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
70, _
[名称名])
.Parameters.Append pm
Set pm = .CreateParameter(, adSmallInt, adParamInput,
, nouhin)
.Parameters.Append pm
Set pm = .CreateParameter(, adSmallInt, adParamInput,
, [区分1])
.Parameters.Append pm
Set pm = .CreateParameter(, adSmallInt, adParamInput,
, [区分2])
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
40, _
[見出し])
.Parameters.Append pm
iro = ""
If (Me![名称区分コード] = "納品書見出し") Or _
(Me![名称区分コード] = "請求書見出し") Then
Select Case 色選択.Value
Case 1
iro = "黒"
Case 2
iro = "緑"
Case 3
iro = "赤"
Case 4
iro = "青"
Case 5
iro = "灰"
Case 6
iro = "茶"
Case 7
iro = "水"
Case Else
End Select
End If
Set pm = .CreateParameter(, adVarChar, adParamInput,
2, iro) '色
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
2, _
Format$([dencode], "00")) '名称区分コード文字
.Parameters.Append pm
Set pm = .CreateParameter(, adVarChar, adParamInput,
3, _
Format$([名称コード], "000")) '名称コード文字
.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
ストアドプロシジャの記述は次回と致します。
===================================================================
◆
実践テクニック、Accessで作るクラサバシステム ◆
なるほど、これで解決、vbaを使いこなす方法をお教えします
編集・構成:高橋浩
提供・発行:ティウェア
http://www.1tware.com/index.html
Access2000+MSDE2000、Access2002+MSDE2000、Access2003+MSDE2000で
作る販売管理ソフト、クライアントサーバーシステムを構築
※当メールマガジンに掲載された記事を許可なく転載することを禁じます。
===================================================================
実践テクニック、Accessで作るクラサバシステム(隔週 火曜日発行中)
SEが10年以上の開発ノウハウを惜しみなく完全公開!
|