List 6-171 修正したBusiness.SlipコンポーネントのGetSlipsメソッド(修正個所は赤色で示した)
  1: Public Function GetSlips(ByVal start_MADEDATE As Variant, _
                              ByVal end_MADEDATE As Variant, _
                              ByVal start_DELIVERDATE As Variant, _
                              ByVal end_DELIVERDATE As Variant, _
                              ByVal IncludeOtherMade As Boolean, _
                              ByVal filterSlip As FILTER_SLIP, _
                              ByVal IncludeDeleted As Boolean, _
                               Optional ByVal CustomerID As Long = -1) _
                              ) As ADODB.Recordset
  2: 
  3:     ' 指定された条件に合致する伝票の一覧を返す
  4:     ' 【引数】
  5:     '   start_MADEDATE = 起票日による絞り込みの開始日(この日を含む)。
  6:     '                    Nullのときには絞り込みなし
  7:     '   end_MADEDATE =  起票日による絞り込みの終了日(この日を含む)。
  8:     '                    Nullのときには絞り込みなし
  9:     '   start_DELIVERDATE = 納入予定日による絞り込みの開始日(この日を含む)。
 10:     '                       Nullのときには絞り込みなし
 11:     '   end_DELIVERDATE = 納入予定日による絞り込みの終了日(この日を含む)。
 12:     '                     Nullのときには絞り込みなし
 13:     '   IncludeOtherMade = 他人が起票した伝票も含むかどうかのフラグ。
 14:     '                      Trueのときには含み,Falseのときには含まない
 15:     '   filterSlip = 伝票の状態による絞り込み。FILTER_SLIP列挙型の組み合わせ。
 16:     '                FILTER_SLIP_ALLのときにはすべての伝票
 17:     '   IncludeDeleted = 削除ずみを含むかどうかのフラグ。
 18:     '                    Trueで含む。Falseで含まない
 19:     '   CustomerID = 顧客による絞り込み。顧客番号を指定する。
 20:     '                負のときまたは省略されたときには顧客による絞り込みなし
 21:     ' 【戻り値】
 22:     '   条件に合致する伝票の一覧を含むADODB.Recordsetオブジェクト
 23:     '   戻り値となるADODB.Recordsetオブジェクトは読み取り専用の閉じたレコードセット
 24:     Dim objContext As ObjectContext
 25:     Dim objDataSlip As DataObj.Slip
 26:     
 27:     ' オブジェクトコンテキストの取得
 28:     Set objContext = GetObjectContext()
 29:     
 30:     ' エラーハンドラの設定
 31:     On Error GoTo ErrHandle
 32:     
 33:     ' ロールを調べ,いくつかの値を制限する
 34:     If Not objContext.IsSecurityEnabled() Then
 35:         ' セキュリティ設定が無効
 36:         Err.Raise ERR_NOSECURE, App.Title, "セキュリティ機構が無効です"
 37:     End If
 38:     
 39:     ' filterSlipの制限を変更
 40:     If objContext.IsCallerInRole("AllAdmin") Or _
            objContext.IsCallerInRole("SalesAdmin") Or _
            objContext.IsCallerInRole("SalesManager") Or _
            objContext.IsCallerInRole("Sales") Then
 41:         ' AllAdmin,SalesAdmin,SalesManager,Salesのときには制限なし
 42:         
 43:     Else
 44:         ' FILTER_SLIP_CREATING,
 45:         ' FILTER_SLIP_REJECTED,FILTER_SLIP_REQUESTINGCONSENTの指定は禁止
 46:         filterSlip = filterSlip And _
                            (Not (FILTER_SLIP_CREATING Or _
                                  FILTER_SLIP_REJECTED Or FILTER_SLIP_REQUESTINGCONSENT))
 47:         If Not (objContext.IsCallerInRole("Products") Or _
                objContext.IsCallerInRole("ProductsAdmin")) Then
 48:             ' FILTER_SLIP_CONSENTEDも禁止
 49:             filterSlip = filterSlip And (Not FILTER_SLIP_CONSENTED)
 50:         End If
 51:     End If
 52:     
 53:     ' IncludeDeletedの制限
 54:     If Not (objContext.IsCallerInRole("AllAdmin") Or _
                objContext.IsCallerInRole("SalesAdmin") Or _
                objContext.IsCallerInRole("ProductsAdmin") Or _
                objContext.IsCallerInRole("AccountingAdmin")) Then
 55:         ' IncludeDeletedはFalseに固定
 56:         IncludeDeleted = False
 57:     End If
 58:     
 59:     ' DataObj.Slipコンポーネントの実体化
 60:     Set objDataSlip = CreateObject("DataObj.Slip")
 61:     
 62:     ' 伝票一覧を取得し,戻り値とする
 63:     Set GetSlips = objDataSlip.GetRecords(start_MADEDATE, end_MADEDATE, _
                                               start_DELIVERDATE, end_DELIVERDATE, _
                                               IncludeOtherMade, filterSlip, _
                                               IncludeDeleted, CustomerID)
 64:     ' DataObj.Slipコンポーネントの解放
 65:     Set objDataSlip = Nothing
 66:     
 67:     ' トランザクションのコミット
 68:     objContext.SetComplete
 69:     
 70:     ' オブジェクトコンテキストの解放
 71:     Set objContext = Nothing
 72:     
 73:     Exit Function
 74: 
 75: ErrHandle:
 76:     ' エラーハンドラ
 77:     objContext.SetAbort
 78:     Set objContext = Nothing
 79:     Set objDataSlip = Nothing
 80:     
 81:     ' エラーの再発行
 82:     Err.Raise Err.NUMBER, Err.Source, Err.Description, _
                   Err.HelpFile, Err.HelpContext
 83: End Function