List 6-125 DataObj.SlipコンポーネントのSetTotalメソッド
  1: Public Sub SetTotal(ByVal SlipID As Long, _
                         ByVal SUBTOTAL As Currency, _
                         ByVal TAX As Currency, _
                         ByVal TOTAL As Currency)
  2:     ' 指定された伝票番号を持つ伝票の
  3:     ' 小計,消費税,合計を設定する
  4:     ' 【引数】
  5:     '   SlipID = 設定したい伝票を特定する伝票番号
  6:     '   SUBTOTAL = 設定したい小計
  7:     '   TAX = 設定したい消費税
  8:     '   TOTAL = 設定したい合計
  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:     ' 伝票の小計,消費税,合計を設定
 31:     Set objRec = CreateObject("ADODB.Recordset")
 32:     objRec.Open "SELECT SUBTOTAL, TAX, TOTAL, LASTUSER, LASTDATE" & _
                     " FROM 伝票情報 WHERE ID=" & SlipID, _
                     g_DBConnection, adOpenKeyset, adLockPessimistic, adCmdText
 33:     
 34:     If objRec.EOF Then
 35:         Err.Raise Errorcode.Err_NOTFOUND, App.Title, _
                       "指定された伝票番号を持つ伝票が見つかりません"
 36:     End If
 37:     
 38:     ' レコードの値を更新
 39:     If objRec.Fields("SUBTOTAL").Value <> SUBTOTAL Then
 40:         objHistory.AddHistory "伝票情報", "SUBTOTAL", SlipID, _
                                   objRec.Fields("SUBTOTAL").Value, SUBTOTAL
 41:         objRec.Fields("SUBTOTAL").Value = SUBTOTAL
 42:     End If
 43:     If objRec.Fields("TAX").Value <> TAX Then
 44:         objHistory.AddHistory "伝票情報", "TAX", SlipID, _
                                   objRec.Fields("TAX").Value, TAX
 45:         objRec.Fields("TAX").Value = TAX
 46:     End If
 47:     If objRec.Fields("TOTAL").Value <> TOTAL Then
 48:         objHistory.AddHistory "伝票情報", "TOTAL", SlipID, _
                                   objRec.Fields("TOTAL").Value, TOTAL
 49:         objRec.Fields("TOTAL").Value = TOTAL
 50:     End If
 51:     
 52:     objRec.Fields("LASTUSER").Value = userName
 53:     objRec.Fields("LASTDATE").Value = NowDate
 54:     
 55:     objRec.Update
 56:     
 57:     ' データベースとの接続を閉じてレコードセットを解放
 58:     objRec.Close
 59:     Set objRec = Nothing
 60:     
 61:     ' DataObj.Historyオブジェクトの解放
 62:     Set objHistory = Nothing
 63:     
 64:     ' トランザクションをコミット
 65:     objContext.SetComplete
 66:     
 67:     ' オブジェクトコンテキストの解放
 68:     Set objContext = Nothing
 69:     
 70:     Exit Sub
 71: 
 72: ErrHandle:
 73:     ' エラーハンドラ
 74:     objContext.SetAbort
 75:     
 76:     Set objContext = Nothing
 77:     Set objRec = Nothing
 78:     Set objHistory = Nothing
 79:     
 80:     ' エラーの再発行
 81:     Err.Raise Err.NUMBER, Err.Source, Err.Description, _
                   Err.HelpFile, Err.HelpContext
 82: End Sub