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