List 6-57 DataObj.ProductコンポーネントのUpdateRecordメソッド
1: Public Sub UpdateRecord(ByVal ProductID As Long, _
ByVal PRODUCTNAME As Variant, ByVal YOMIGANA As Variant, _
ByVal PRICE As Variant, ByVal MEMO As Variant)
2: ' 製品情報テーブル内の指定された製品番号の製品情報を変更する
3: ' 【引数】
4: ' ProductID = 変更したい製品を特定する製品番号を指定する
5: ' PRODUCTNAME = 設定する製品名を指定する
6: ' YOMIGANA = 設定する製品名よみがなを指定する
7: ' PRICE = 設定する製品の価格を指定する
8: ' MEMO = 設定する製品の摘要を指定する
9: ' 【戻り値】
10: ' なし
11: Dim objContext As ObjectContext
12: Dim objRec As ADODB.Recordset
13: Dim userName As String, NowDate As Date
14: Dim objHistory As DataObj.History
15:
16: ' オブジェクトコンテキストの取得
17: Set objContext = GetObjectContext()
18:
19: ' エラーハンドラの設定
20: On Error GoTo ErrHandle
21:
22: ' DataObj.Historyコンポーネントの実体化
23: Set objHistory = CreateObject("DataObj.History")
24:
25: ' ユーザー名と現在の時刻を取得
26: userName = objContext.Security.GetOriginalCallerName()
27: NowDate = Now()
28:
29: ' 与えられた引数が正しいかどうかをチェック
30: Chk_PRODUCTNAME PRODUCTNAME
31: Chk_YOMIGANA YOMIGANA
32: Chk_PRICE PRICE
33: Chk_MEMO MEMO
34:
35: ' データベースと接続して,指定された製品の製品情報を更新する
36: Set objRec = CreateObject("ADODB.Recordset")
37: objRec.Open "SELECT * FROM 製品情報 WHERE ID=" & ProductID, _
g_DBConnection, adOpenKeyset, adLockPessimistic, adCmdText
38:
39: If objRec.EOF Then
40: Err.Raise Errorcode.Err_NotFound, App.Title, _
"指定された製品番号を持つ製品が見つかりません"
41: End If
42:
43: ' レコードの値を更新
44: If objRec.Fields("PRODUCTNAME").Value <> PRODUCTNAME Or _
(IsNull(objRec.Fields("PRODUCTNAME").Value) Xor IsNull(PRODUCTNAME)) Then
45: objHistory.AddHistory "製品情報", "PRODUCTNAME", ProductID, _
objRec.Fields("PRODUCTNAME").Value, PRODUCTNAME
46: objRec.Fields("PRODUCTNAME").Value = PRODUCTNAME
47: End If
48:
49: If objRec.Fields("YOMIGANA").Value <> YOMIGANA Or _
(IsNull(objRec.Fields("YOMIGANA").Value) Xor IsNull(YOMIGANA)) Then
50: objHistory.AddHistory "製品情報", "YOMIGANA", ProductID, _
objRec.Fields("YOMIGANA").Value, YOMIGANA
51: objRec.Fields("YOMIGANA").Value = YOMIGANA
52: End If
53:
54: If objRec.Fields("PRICE").Value <> PRICE Or _
(IsNull(objRec.Fields("PRICE").Value) Xor IsNull(PRICE)) Then
55: objHistory.AddHistory "製品情報", "PRICE", ProductID, _
objRec.Fields("PRICE").Value, PRICE
56: objRec.Fields("PRICE").Value = PRICE
57: End If
58:
59: If objRec.Fields("MEMO").Value <> MEMO Or _
(IsNull(objRec.Fields("MEMO").Value) Xor IsNull(MEMO)) Then
60: objHistory.AddHistory "製品情報", "MEMO", ProductID, _
objRec.Fields("MEMO").Value, MEMO
61: End If
62:
63: objRec.Fields("LASTUSER").Value = userName
64: objRec.Fields("LASTDATE").Value = NowDate
65: objRec.Update
66:
67: ' データベースとの接続を閉じてレコードセットを解放
68: objRec.Close
69: Set objRec = Nothing
70:
71: ' DataObj.Historyオブジェクトを解放する
72: Set objHistory = Nothing
73:
74: ' コミットする
75: objContext.SetComplete
76:
77: ' オブジェクトコンテキストの解放
78: Set objContext = Nothing
79:
80: Exit Sub
81:
82: ErrHandle:
83: ' エラーハンドラ
84: objContext.SetAbort
85: Set objContext = Nothing
86: Set objRec = Nothing
87: Set objHistory = Nothing
88:
89: ' エラーの再発行
90: Err.Raise Err.Number, Err.Source, Err.Description, _
Err.HelpFile, Err.HelpContext
91: End Sub