List 6-76 DataObj.ProductコンポーネントのAddStockメソッド
  1: Public Sub AddStock(ByVal ProductID As Long, ByVal NUMBER As Long)
  2:     ' 製品情報テーブル内の指定された製品の在庫数(STOCKフィールドの値)
  3:     ' を指定された数だけ増やす(負の数が渡されたときには減らす)
  4:     ' 【引数】
  5:     '   ProductID = 在庫数の増加の対象となる製品を特定する製品番号
  6:     '   Number = 在庫を増やす数量(負のときは在庫の減少を示す)
  7:     ' 【戻り値】
  8:     '   なし
  9:     Dim objContext As ObjectContext
 10:     Dim objRec As ADODB.Recordset
 11:     Dim userName As String, NowDate As Date
 12:     Dim objHistory As DataObj.History
 13:     Dim NewStock As Long
 14:     
 15:     ' オブジェクトコンテキストの取得
 16:     Set objContext = GetObjectContext()
 17:     
 18:     ' エラーハンドラの設定
 19:     On Error GoTo ErrHandle
 20:     
 21:     ' DataObj.Historyコンポーネントの実体化
 22:     Set objHistory = CreateObject("DataObj.History")
 23:     
 24:     ' ユーザー名と現在の時刻を取得
 25:     userName = objContext.Security.GetOriginalCallerName()
 26:     NowDate = Now()
 27:     
 28:     ' データベースと接続して,指定された製品の在庫数を更新する
 29:     Set objRec = CreateObject("ADODB.Recordset")
 30:     objRec.Open "SELECT STOCK, LASTUSER, LASTDATE FROM 製品情報 WHERE ID=" & _
                      ProductID & " AND DELETEDFLAG=0", _
                      g_DBConnection, adOpenKeyset, adLockPessimistic, adCmdText
 31:     
 32:     If objRec.EOF Then
 33:         Err.Raise Errorcode.Err_NotFound, App.Title, _
                       "指定された製品番号を持つ製品が見つかりません"
 34:     End If
 35:     
 36:     ' レコードの値を更新
 37:     NewStock = objRec.Fields("STOCK").Value + NUMBER
 38:     objHistory.AddHistory "製品情報", "STOCK", ProductID, _
                               objRec.Fields("STOCK").Value, NewStock
 39:     objRec.Fields("STOCK").Value = NewStock
 40:     
 41:     objRec.Fields("LASTUSER").Value = userName
 42:     objRec.Fields("LASTDATE").Value = NowDate
 43:     objRec.Update
 44:     
 45:     ' データベースとの接続を閉じてレコードセットを解放
 46:     objRec.Close
 47:     Set objRec = Nothing
 48:     
 49:     ' DataObj.Historyオブジェクトを解放する
 50:     Set objHistory = Nothing
 51:     
 52:     ' コミットする
 53:     objContext.SetComplete
 54:     
 55:     ' オブジェクトコンテキストの解放
 56:     Set objContext = Nothing
 57:     
 58:     Exit Sub
 59:     
 60: ErrHandle:
 61:     ' エラーハンドラ
 62:     objContext.SetAbort
 63:     Set objContext = Nothing
 64:     Set objRec = Nothing
 65:     Set objHistory = Nothing
 66:     
 67:     ' エラーの再発行
 68:     Err.Raise Err.NUMBER, Err.Source, Err.Description, _
                   Err.HelpFile, Err.HelpContext
 69: End Sub