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