List 6-72 DataObj.StockコンポーネントのSetConfirmedFlagメソッド
  1: Public Sub SetConfirmedFlag(ByVal StockID As Long, _
                                 ByVal CONFIRMEDFLAG As Boolean)
  2:     ' 在庫情報テーブル中の指定されたレコードの
  3:     ' CONFIRMEDFLAGフィールドの値を変更する
  4:     ' 【引数】
  5:     '   StockID = 変更するレコードを特定するレコードID(IDフィールドの値)
  6:     '   ConfirmedFlag = 設定するCONFIRMEDFLAGフィールドの値
  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:     Set objRec = CreateObject("ADODB.Recordset")
 29:     objRec.Open "SELECT LASTUSER, LASTDATE, CONFIRMEDFLAG, " & _
                     "DUEDATE FROM 在庫情報 WHERE ID=" & _
                     StockID & " AND DELETEDFLAG=0", g_DBConnection, _
                     adOpenKeyset, adLockPessimistic, adCmdText
 30:     
 31:     If objRec.EOF Then
 32:         Err.Raise Errorcode.Err_NotFound, App.Title, _
                       "指定された入庫または出庫予定が見つかりません"
 33:     End If
 34:     
 35:     ' レコードの値を更新
 36:     If objRec.Fields("CONFIRMEDFLAG").Value <> CONFIRMEDFLAG Then
 37:         objHistory.AddHistory "在庫情報", "CONFIRMEDFLAG", StockID, _
                                   objRec.Fields("CONFIRMEDFLAG").Value, _
                                   CONFIRMEDFLAG
 38:         objRec.Fields("CONFIRMEDFLAG").Value = CONFIRMEDFLAG
 39:         If CONFIRMEDFLAG Then
 40:             objHistory.AddHistory "在庫情報", "DUEDATE", StockID, _
                                       objRec.Fields("DUEDATE").Value, NowDate
 41:             objRec.Fields("DUEDATE").Value = NowDate
 42:         Else
 43:             objHistory.AddHistory "在庫情報", "DUEDATE", StockID, _
                                       objRec.Fields("DUEDATE").Value, Null
 44:             objRec.Fields("DUEDATE").Value = Null
 45:         End If
 46:     End If
 47:     
 48:     objRec.Fields("LASTUSER").Value = userName
 49:     objRec.Fields("LASTDATE").Value = NowDate
 50:     objRec.Update
 51:     
 52:     ' データベースとの接続を閉じてレコードセットを解放
 53:     objRec.Close
 54:     Set objRec = Nothing
 55:     
 56:     ' DataObj.Historyオブジェクトを解放する
 57:     Set objHistory = Nothing
 58:     
 59:     ' コミットする
 60:     objContext.SetComplete
 61:     
 62:     ' オブジェクトコンテキストの解放
 63:     Set objContext = Nothing
 64: 
 65:     Exit Sub
 66:     
 67: ErrHandle:
 68:     ' エラーハンドラ
 69:     objContext.SetAbort
 70:     Set objContext = Nothing
 71:     Set objRec = Nothing
 72:     Set objHistory = Nothing
 73:     
 74:     ' エラーの再発行
 75:     Err.Raise Err.NUMBER, Err.Source, Err.Description, _
                   Err.HelpFile, Err.HelpContext
 76: End Sub