List 6-149 DataObj.StockコンポーネントのGetWillStockメソッド
  1: Public Function GetWillStock(ByVal ProductID As Long, _
                                  ByVal willDate As Variant) As Long
  2:     ' 指定された日付までに指定された製品がいくつ入庫するのかを返す
  3:     ' 【引数】
  4:     '   ProductID = 調査したい製品の製品番号
  5:     '   willDate = 調査したい日付(この日を含む)
  6:     ' 【戻り値】
  7:     '   指定された日付までに入庫する数量
  8:     Dim objContext As ObjectContext
  9:     Dim objConn As ADODB.Connection
 10:     Dim objRec As ADODB.Recordset
 11:     
 12:     ' オブジェクトコンテキストの取得
 13:     Set objContext = GetObjectContext()
 14:     
 15:     ' エラーハンドラの設定
 16:     On Error GoTo ErrHandle
 17:     
 18:     ' 日付が正しいかどうか
 19:     If IsNull(willDate) Or (Not IsDate(willDate)) Then
 20:         Err.Raise Errorcode.Err_WILLDAY, App.Title, _
                       "日付が不正です"
 21:     End If
 22:     
 23:     ' データベースに接続し,SQL文を実行する
 24:     Set objConn = CreateObject("ADODB.Connection")
 25:     objConn.Open g_DBConnection
 26:     Set objRec = objConn.Execute( _
                          "SELECT SUM(NUMBER) As SUMNUMBER FROM 在庫情報 " & _
                          " WHERE CONFIRMEDFLAG = 0 AND NUMBER > 0" & _
                          " AND DATE <= '" & FormatDateTime(willDate) & "'" & _
                          " AND PRODUCTID=" & ProductID & _
                          " AND DELETEDFLAG = 0")
 27:         
 28:     If objRec.EOF Then
 29:         ' 見つからない場合には0を返す
 30:         GetWillStock = 0
 31:     Else
 32:         If Not IsNull(objRec.Fields("SUMNUMBER").Value) Then
 33:             GetWillStock = objRec.Fields("SUMNUMBER").Value
 34:         Else
 35:             GetWillStock = 0
 36:         End If
 37:     End If
 38: 
 39:     ' データベースとの接続を閉じてレコードセットを解放
 40:     Set objRec = Nothing
 41:     objConn.Close
 42:     Set objConn = Nothing
 43:     
 44:     ' トランザクションのコミット
 45:     objContext.SetComplete
 46:     
 47:     ' オブジェクトコンテキストの解放
 48:     Set objContext = Nothing
 49:     
 50:     Exit Function
 51: 
 52: ErrHandle:
 53:     ' エラーハンドラ
 54:     objContext.SetAbort
 55:     Set objContext = Nothing
 56:     Set objConn = Nothing
 57:     Set objRec = Nothing
 58:     
 59:     ' エラーの再発行
 60:     Err.Raise Err.NUMBER, Err.Source, Err.Description, _
                   Err.HelpFile, Err.HelpContext
 61: End Function