Access(ADP & VBA)とMSDEで作るクライアントサーバーシステム(c/s)

 
実践テクニック、Accessで作るクラサバシステム



2004/02/09配信
 

第3コース  第4回 「コントロールマスタの作成」




 

 前回に続きコントロールマスタの作成です。

 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年以上の開発ノウハウを惜しみなく完全公開!

Mail:  (半角英数字)     Powered byまぐまぐ


HOME / お客様の声 / メルマガ / 販売管理ソフト教材 / 会社概要/ 特定商取引法/ お申し込み
 お問い合わせ / メルマガのご意見ご感想 / メルマガのバックナンバー/ プライバシーポリシー
 


 Copyright (c) 2001 ティウェア All rights reserved.