List 6-88 DataObj.StockコンポーネントのGetRecordsメソッド
  1: Public Function GetRecords(ByVal FilterFlag As FILTER_STOCK, _
                                ByVal start_DATE As Variant, _
                                ByVal end_Date As Variant, _
                                ByVal start_DUEDATE As Variant, _
                                ByVal end_DUEDATE As Variant, _
                                ByVal IncludeDeleted As Boolean) _
                                As ADODB.Recordset
  2:     ' 登録されている入庫または出庫予定を
  3:     ' ADODB.Recordsetオブジェクトとして返す
  4:     ' 【引数】
  5:     '   FilterFlag = 絞り込む条件
  6:     '                FILTER_STOCK列挙型の組み合わせを指定する
  7:     '   start_DATE = 予定日による絞り込み条件
  8:     '                この値よりも等しいか大きい予定日のものだけを返す
  9:     '                Nullを指定した場合には無視
 10:     '   end_Date = 予定日による絞り込み条件
 11:     '              この値よりも等しいか小さい予定日のものだけを返す
 12:     '              Nullを指定した場合には無視
 13:     '   start_DUEDATE = 施行日による絞り込み条件
 14:     '                   この値よりも等しいか大きい施行日のものだけを返す
 15:     '                   Nullを指定した場合には無視
 16:     '   end_DUEDATE = 施行日による絞り込み条件
 17:     '                 この値よりも等しいか小さい施行日のものだけを返す
 18:     '                 Nullを指定した場合には無視
 19:     '   IncludeDeleted = 削除ずみを含むかどうかのフラグ
 20:     '                    Trueのとき削除ずみを含む,Falseのとき削除ずみを含まない
 21:     ' 【戻り値】
 22:     '   指定された条件に合致する入庫または出庫の予定を含む
 23:     '   ADODB.Recordsetオブジェクト
 24:     '   戻り値となるADODB.Recordsetオブジェクトは
 25:     '   読み取り専用の閉じたRecordset
 26:     Dim objContext As ObjectContext
 27:     Dim objRec As ADODB.Recordset
 28:     Dim strQuery As String
 29:     Dim userName As String
 30:     
 31:     ' オブジェクトコンテキストの取得
 32:     Set objContext = GetObjectContext()
 33:     
 34:     ' エラーハンドラの設定
 35:     On Error GoTo ErrHandle
 36:     
 37:     ' 発行するSELECT文
 38:     strQuery = "SELECT 在庫情報.ID As ID," & _
                      "在庫情報.DATE As DATE, " & _
                      "在庫情報.DUEDATE As DUEDATE," & _
                      "在庫情報.CONFIRMEDFLAG As CONFIRMEDFLAG, " & _
                      "在庫情報.PRODUCTID As PRODUCTID," & _ 
                      "製品情報.PRODUCTNAME As PRODUCTNAME," & _
                      "在庫情報.NUMBER As NUMBER, " & _
                      "在庫情報.MEMO As MEMO," & _
                      "在庫情報.SLIPID As SLIPID," & _
                      "在庫情報.MADEUSER As MADEUSER," & _
                      "在庫情報.MADEDATE As MADEDATE," & _
                      "在庫情報.LASTUSER As LASTUSER," & _
                      "在庫情報.LASTDATE As LASTDATE," & _
                      "在庫情報.DELETEDFLAG As DELETEDFLAG" & _
                    " FROM 在庫情報, 製品情報" & _
                    " WHERE 在庫情報.PRODUCTID=製品情報.ID"
 39:     
 40:     ' 条件による絞り込み
 41:     If FilterFlag And FILTER_STOCK_OWNER Then
 42:         ' 自分が登録したレコードだけに絞り込む
 43:         userName = objContext.Security.GetOriginalCallerName()
 44:         strQuery = strQuery & " AND 在庫情報.MADEUSER='" & _
                        userName & "'"
 45:     End If
 46:     If FilterFlag And FILTER_STOCK_INONLY Then
 47:         ' 入庫レコードのみとする
 48:         strQuery = strQuery & " AND 在庫情報.SLIPID=Null"
 49:     End If
 50:     If FilterFlag And FILTER_STOCK_OUTONLY Then
 51:         ' 出庫レコードのみとする
 52:         strQuery = strQuery & " AND 在庫情報.SLIPID<>Null"
 53:     End If
 54:     If FilterFlag And FILTER_STOCK_DUEONLY Then
 55:         ' 施行ずみだけに絞り込む
 56:         strQuery = strQuery & " AND 在庫情報.CONFIRMEDFLAG=1"
 57:     End If
 58:     If FilterFlag And FILTER_STOCK_NODUEONLY Then
 59:         ' 施行まえだけに絞り込む
 60:         strQuery = strQuery & " AND 在庫情報.CONFIRMEDFLAG=0"
 61:     End If
 62:     
 63:     ' 日付による絞り込み
 64:     If Not IsNull(start_DATE) Then
 65:         ' 予定日による絞り込み
 66:         If Not IsDate(start_DATE) Then
 67:             Err.Raise Errorcode.Err_WILLDAY, App.Title, _
                           "予定日の設定が不正です"
 68:         End If
 69:         strQuery = strQuery & " AND 在庫情報.DATE >='" & _
                        FormatDateTime(start_DATE) & "'"
 70:     End If
 71:     If Not IsNull(end_Date) Then
 72:         ' 予定日による絞り込み
 73:         If Not IsDate(end_Date) Then
 74:             Err.Raise Errorcode.Err_WILLDAY, App.Title, _
                           "予定日の設定が不正です"
 75:         End If
 76:         strQuery = strQuery & " AND 在庫情報.DATE <='" & _
                        FormatDateTime(end_Date) & " '"
 77:     End If
 78:     If Not IsNull(start_DUEDATE) Then
 79:         ' 施行日による絞り込み
 80:         If Not IsDate(start_DUEDATE) Then
 81:             Err.Raise Errorcode.Err_DUEDATE, App.Title, _
                           "施行日の設定が不正です"
 82:         End If
 83:         strQuery = strQuery & " AND 在庫情報.DUEDATE >='" & _
                        FormatDateTime(start_DUEDATE) & "'"
 84:     End If
 85:     If Not IsNull(end_DUEDATE) Then
 86:         ' 施行日による絞り込み
 87:         If Not IsDate(end_DUEDATE) Then
 88:             Err.Raise Errorcode.Err_DUEDATE, App.Title, _
                           "施行日の設定が不正です"
 89:         End If
 90:         strQuery = strQuery & " AND 在庫情報.DUEDATE <='" & _
                        FormatDateTime(end_DUEDATE) & "'"
 91:     End If
 92:     
 93:     ' 削除ずみを含まないようにするか
 94:     If Not IncludeDeleted Then
 95:         strQuery = strQuery & " AND DELETEDFLAG=0"
 96:     End If
 97: 
 98:     ' データベースと接続し,SELECT文を発行する
 99:     Set objRec = CreateObject("ADODB.Recordset")
100:     ' カーソルロケーションをクライアントカーソルに設定する
101:     objRec.CursorLocation = adUseClient
102:     
103:     ' SELECT文の実行
104:     objRec.Open strQuery, g_DBConnection, adOpenStatic, _
                     adLockReadOnly, adCmdText
105:     
106:     ' データベースコネクションを切り離す
107:     Set objRec.ActiveConnection = Nothing
108:     
109:     ' 取得したレコードセットを戻り値とする
110:     Set GetRecords = objRec
111:     Set objRec = Nothing
112:     
113:     ' コミットする
114:     objContext.SetComplete
115:     
116:     ' オブジェクトコンテキストの解放
117:     Set objContext = Nothing
118:     
119:     Exit Function
120: 
121: ErrHandle:
122:     ' エラーハンドラ
123:     objContext.SetAbort
124:     
125:     Set objContext = Nothing
126:     Set objRec = Nothing
127:     
128:     ' エラーの再発行
129:     Err.Raise Err.NUMBER, Err.Source, Err.Description, _
                   Err.HelpFile, Err.HelpContext
130: End Function