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