List 6-59 Business.ProductコンポーネントのGetProductメソッド
  1: Public Sub GetProduct(ByVal ProductID As Long, _
                           ByRef ProductNAME As Variant, ByRef YOMIGANA As Variant, _
                           ByRef PRICE As Variant, ByRef STOCK As Variant, _
                           ByRef MEMO As Variant, ByRef BACKORDER As Variant, _
                           ByRef MADEUSER As Variant, ByRef MADEDATE As Variant, _
                           ByRef LASTUSER As Variant, ByRef LASTDATE As Variant)
  2:     ' 製品情報テーブル内の指定された製品番号の製品情報を返す
  3:     ' 【引数】
  4:     '   ProductID = 読み出したい製品を特定する製品番号を指定する
  5:     '   PRODUCTNAME = 指定された製品の製品名が格納される
  6:     '   YOMIGANA = 指定された製品の製品名のよみがなが格納される
  7:     '   PRICE = 指定された製品の価格が格納される
  8:     '   STOCK = 指定された製品の在庫数が格納される
  9:     '   MEMO = 指定された製品の摘要が格納される
 10:     '   BACKORDER = 指定された製品の予約数が格納される
 11:     '   MADEUSER = 指定された製品を登録したユーザー名が格納される
 12:     '   MADEDATE = 指定された製品が登録された日時が格納される
 13:     '   LASTUSER = 指定された製品の最終更新ユーザー名が格納される
 14:     '   LASTDATE = 指定された製品の最終更新日時が格納される
 15:     ' 【戻り値】
 16:     '   なし
 17:     Dim objContext As ObjectContext
 18:     Dim objDataProduct As DataObj.Product
 19:     
 20:     ' オブジェクトコンテキストの取得
 21:     Set objContext = GetObjectContext()
 22:     
 23:     ' エラーハンドラの設定
 24:     On Error GoTo ErrHandle
 25:     
 26:     ' DataObj.Productコンポーネントの実体化
 27:     Set objDataProduct = CreateObject("DataObj.Product")
 28:     
 29:     ' 削除ずみであるかどうか
 30:     If objDataProduct.IsDeleted(ProductID) = ID_Deleted Then
 31:         ' 削除ずみである
 32:         ' セキュリティ機能が有効か
 33:         If Not objContext.IsSecurityEnabled() Then
 34:             Err.Raise BusinessError.Err_NOSECURE, App.Title, _
                           "セキュリティ機構が無効です"
 35:         End If
 36:         ' ProductsAdminロールまたはAllAdminロールに属しているか
 37:         If Not (objContext.IsCallerInRole("ProductsAdmin") Or _
                objContext.IsCallerInRole("AllAdmin")) Then
 38:             ' 属していない
 39:             Err.Raise Errorcode.Err_NotFound, App.Title, _
                           "指定された製品番号を持つ製品が見つかりません"
 40:         End If
 41:     End If
 42:     
 43:     ' 製品情報の取得
 44:     objDataProduct.GetRecord ProductID, ProductNAME, YOMIGANA, _
                                  PRICE, STOCK, MEMO, BACKORDER, _
                                  MADEUSER, MADEDATE, LASTUSER, LASTDATE
 45:     
 46:     ' DataObj.Productの解放
 47:     Set objDataProduct = Nothing
 48:     
 49:     ' コミットする
 50:     objContext.SetComplete
 51:     
 52:     ' オブジェクトコンテキストの解放
 53:     Set objContext = Nothing
 54:     
 55:     Exit Sub
 56:     
 57: ErrHandle:
 58:     ' エラーハンドラ
 59:     objContext.SetAbort
 60:     Set objContext = Nothing
 61:     Set objDataProduct = Nothing
 62:   
 63:     ' エラーの再発行
 64:     Err.Raise Err.Number, Err.Source, Err.Description, _
                   Err.HelpFile, Err.HelpContext
 65: End Sub