List 6-155 Business.ProductコンポーネントのGetReadyDate_Productメソッド
  1: Public Function GetReadyDate_Product(ByVal ProductID As Long, _
                                          ByVal Number As Long) As Variant
  2:     ' 指定された製品が指定された数量だけ揃う日付を返す
  3:     ' 【引数】
  4:     '   ProductID = 製品を指定する製品番号
  5:     '   Number = 製品の数量
  6:     ' 【戻り値】
  7:     '   指定された数量が在庫として使えるようになる日付
  8:     '   その時点のところ指定された数量だけを満たす入庫予定がなければNullを返す
  9:     Dim objContext As ObjectContext
 10:     Dim objDataProduct As DataObj.Product
 11:     Dim objDataStock As DataObj.STOCK
 12:     Dim NowStock As Long
 13:     
 14:     ' オブジェクトコンテキストの取得
 15:     Set objContext = GetObjectContext()
 16:     
 17:     ' エラーハンドラの設定
 18:     On Error GoTo ErrHandle
 19:     
 20:     ' DataObj.Productコンポーネントの実体化
 21:     Set objDataProduct = CreateObject("DataObj.Product")
 22:         
 23:     ' 製品が存在することを確認
 24:     If objDataProduct.IsDeleted(ProductID) <> ID_Exists Then
 25:         Err.Raise Err_NOTFOUND, App.Title, _
                       "指定された製品が見つかりません"
 26:     End If
 27:     
 28:     ' 現在,在庫として利用できる数量を取得
 29:     NowStock = objDataProduct.GetNowStock(ProductID)
 30:     If NowStock < Number Then
 31:         ' 在庫が足りない
 32:         ' 在庫が揃う日付を調査し,それを戻り値とする
 33:         Set objDataStock = CreateObject("DataObj.Stock")
 34:         GetReadyDate_Product = objDataStock.GetReadyDate(ProductID, Number - NowStock)
 35:         Set objDataStock = Nothing
 36:     Else
 37:         ' 在庫が足りている
 38:         ' その時点の日付を戻り値とする
 39:         GetReadyDate_Product = Date
 40:     End If
 41:     
 42:     Set objDataProduct = 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 objDataProduct = Nothing
 56:     Set objDataStock = Nothing
 57:     
 58:     ' エラーの再発行
 59:     Err.Raise Err.Number, Err.Source, Err.Description, _
                   Err.HelpFile, Err.HelpContext
 60: End Function