List 6-53 DataObj.ProductコンポーネントのAddRecordメソッド
1: ' エラー処理関数群
2: Private Sub Chk_PRODUCTNAME(ByRef PRODUCTNAME As Variant)
3: ' 製品名が正しいかどうか調べる
4: If IsNull(PRODUCTNAME) Then
5: Err.Raise Errorcode.Err_NAMETOOLONG, App.Title, _
"製品名に値が設定されていません"
6: End If
7: If Len(PRODUCTNAME) > 64 Then
8: Err.Raise Errorcode.Err_NAMETOOLONG, App.Title, _
"製品名は64文字以内でなければなりません"
9: End If
10: End Sub
11:
12: Private Sub Chk_YOMIGANA(ByRef YOMIGANA As Variant)
13: ' よみがなが正しいかどうかを調べる
14: If Len(YOMIGANA) > 80 Then
15: Err.Raise Errorcode.Err_YOMIGANATOOLONG, App.Title, _
"よみがなは80文字以内でなければなりません"
16: End If
17: End Sub
18:
19: Private Sub Chk_PRICE(ByRef PRICE As Variant)
20: ' 価格が正しいかどうかを調べる
21: If IsNull(PRICE) Then
22: Err.Raise Errorcode.Err_PRICE, App.Title, _
"価格が設定されていません"
23: End If
24: If Not IsNumeric(PRICE) Then
25: ' 正しい数値でない
26: Err.Raise Errorcode.Err_PRICE, App.Title, _
"価格が正しくありません"
27: End If
28: End Sub
29:
30: Private Sub Chk_MEMO(ByRef MEMO As Variant)
31: ' 摘要が正しいかどうかを調べる
32: If Len(MEMO) > 80 Then
33: Err.Raise Errorcode.Err_MEMOTOOLONG, App.Title, _
"摘要は80文字以内でなければなりません"
34: End If
35: End Sub
36:
37: ' データ処理する関数
38: Public Function AddRecord(ByVal PRODUCTNAME As Variant, _
ByVal YOMIGANA As Variant, _
ByVal PRICE As Variant, _
ByVal MEMO As Variant) As Long
39: ' 製品情報テーブルに新しいレコードを加える
40: ' 【引数】
41: ' PRODUCTNAME = 製品名
42: ' YOMIGANA = 製品名よみがな
43: ' PRICE = 製品価格
44: ' MEMO = 摘要
45: ' 【戻り値】
46: ' 登録した製品の製品番号(製品情報テーブルのIDフィールドの値)
47: Dim objContext As ObjectContext
48: Dim objRec As ADODB.Recordset
49: Dim userName As String, NowDate As Date
50:
51: ' オブジェクトコンテキストの取得
52: Set objContext = GetObjectContext()
53:
54: ' エラーハンドラの設定
55: On Error GoTo ErrHandle
56:
57: ' ユーザー名と現在の時刻を取得
58: userName = objContext.Security.GetOriginalCallerName()
59: NowDate = Now()
60: ' 与えられた引数が正しいかどうかをチェック
61: Chk_PRODUCTNAME PRODUCTNAME
62: Chk_YOMIGANA YOMIGANA
63: Chk_PRICE PRICE
64: Chk_MEMO MEMO
65:
66: ' データベースと接続して,書き込み可能なレコードセットを得る
67: Set objRec = CreateObject("ADODB.Recordset")
68: objRec.Open "製品情報", g_DBConnection, adOpenKeyset, _
adLockPessimistic, adCmdTable
69:
70: ' 新しいレコードを追加
71: objRec.AddNew
72:
73: ' レコードにデータを設定
74: objRec.Fields("PRODUCTNAME").Value = PRODUCTNAME
75: objRec.Fields("YOMIGANA").Value = YOMIGANA
76: objRec.Fields("PRICE").Value = PRICE
77: objRec.Fields("STOCK").Value = 0 ' 在庫数の初期値は0に
78: objRec.Fields("MEMO").Value = MEMO
79: objRec.Fields("BACKORDER").Value = 0 ' 在庫予約数の初期値は0に
80: objRec.Fields("MADEUSER").Value = userName
81: objRec.Fields("MADEDATE").Value = NowDate
82: objRec.Fields("LASTUSER").Value = userName
83: objRec.Fields("LASTDATE").Value = NowDate
84: objRec.Fields("DELETEDFLAG").Value = 0
85:
86: ' データベースに反映
87: objRec.Update
88:
89: ' 作成した製品情報の製品番号を戻り値として設定する
90: AddRecord = objRec.Fields("ID").Value
91:
92: ' データベースとの接続を閉じてレコードセットを解放
93: objRec.Close
94: Set objRec = Nothing
95:
96: ' コミットする
97: objContext.SetComplete
98:
99: ' オブジェクトコンテキストの解放
100: Set objContext = Nothing
101:
102: Exit Function
103:
104: ErrHandle:
105: ' エラーハンドラ
106: objContext.SetAbort
107: Set objContext = Nothing
108: Set objRec = Nothing
109:
110: ' エラーの再発行
111: Err.Raise Err.Number, Err.Source, Err.Description, _
Err.HelpFile, Err.HelpContext
112: End Function