List 6-184 DataObj.BillコンポーネントのGetRecordsメソッド
  1: Public Function GetRecords(ByVal CustomerID As Variant, _
                                ByVal Status As FILTER_BILL, _
                                ByVal start_MADEDATE As Variant, _
                                ByVal end_MADEDATE As Variant, _
                                ByVal start_SUBMITDATE As Variant, _
                                ByVal end_SUBMITDATE As Variant) _
                                As ADODB.Recordset
  2:     ' 指定された条件に合致する請求書の一覧を返す
  3:     ' 【引数】
  4:     '  CustomerID
  5:     '        顧客による絞り込みをするときの顧客番号。
  6:     '        Nullが指定されたときには顧客による絞り込みなし。
  7:     '  Status
  8:     '        請求書の情報による絞り込み。FILTER_BILL列挙型の組み合わせ。
  9:     '        FILTER_BILL_ALLのときにはすべての請求書。
 10:     '  start_MADEDATE
 11:     '        請求書作成日による絞り込みの開始日(この日を含む)。
 12:     '        Nullのときには絞り込みなし。
 13:     '  end_MADEDATE
 14:     '        請求書作成日による絞り込みの終了日(この日を含む)。
 15:     '        Nullのときには絞り込みなし。
 16:     '  start_SUBMITDATE
 17:     '        入金確認日による絞り込みの開始日(この日を含む)。
 18:     '        Nullのときには絞り込みなし。
 19:     '  end_SUBMITDATE
 20:     '        入金管理日による絞り込みの終了日(この日を含む)。
 21:     '        Nullのときには絞り込みなし。
 22:     ' 【戻り値】
 23:     '   条件に合致する請求書一覧を含むADODB.Recordsetオブジェクト。
 24:     '   戻り値となるADODB.Recordsetオブジェクトは読み取り専用の閉じたRecordset。
 25:     Dim objContext As ObjectContext
 26:     Dim objRec As ADODB.Recordset
 27:     Dim strQuery As String
 28:     Dim userName As String, OrStr As String
 29:     
 30:     ' オブジェクトコンテキストの取得
 31:     Set objContext = GetObjectContext()
 32:     
 33:     ' エラーハンドラの設定
 34:     On Error GoTo ErrHandle
 35:     
 36:     ' 発行するSELECT文
 37:     strQuery = "SELECT 請求書情報.ID As ID, 請求書情報.CUSTOMERID As CUSTOMERID, " & _
                    "顧客情報.NAME As CUSTOMERNAME, 請求書情報.STARTDATE As STARTDATE, " & _
                    "請求書情報.ENDDATE As ENDDATE, 請求書情報.SUBTOTAL As SUBTOTAL, " & _
                    "請求書情報.TAX As TAX, 請求書情報.TOTAL As TOTAL, " & _
                    "請求書情報.SENDBILLFLAG As SENDBILLFLAG, 請求書情報.PAIDFLAG As PAIDFLAG, " & _
                    "請求書情報.SUBMITUSER As SUBMITUSER, 請求書情報.SUBMITDATE As SUBMITDATE, " & _
                    "請求書情報.MEMO As MEMO, 請求書情報.MADEUSER As MADEUSER," & _
                    "請求書情報.MADEDATE As MADEDATE, 請求書情報.LASTUSER As LASTUSER," & _
                    "請求書情報.LASTDATE As LASTDATE, 請求書情報.DELETEDFLAG As DELETEDFLAG " & _
                    " FROM 請求書情報, 顧客情報" & _
                    " WHERE 請求書情報.CUSTOMERID = 顧客情報.ID"
 38:     
 39:     ' 絞り込み条件式の追加
 40:     
 41:     If Not IsNull(CustomerID) Then
 42:         ' 顧客による絞り込みあり
 43:         If Not IsNumeric(CustomerID) Then
 44:             Err.Raise Errorcode.ERR_CUSTOMERID, App.Title, _
                           "顧客番号が不正です"
 45:         End If
 46:         strQuery = strQuery & " AND 請求書情報.CUSTOMERID = " & CustomerID
 47:     End If
 48:     
 49:     If Not IsNull(start_MADEDATE) Then
 50:         ' 請求書作成日による絞り込みの開始日
 51:         If Not IsDate(start_MADEDATE) Then
 52:             Err.Raise Errorcode.Err_MADEDATE, App.Title, _
                           "請求書作成日による絞り込み日時が不正です"
 53:         End If
 54:         strQuery = strQuery & " AND 請求書情報.MADEDATE >= '" & _
                        FormatDateTime(start_MADEDATE) & "'"
 55:     End If
 56:     
 57:     If Not IsNull(end_MADEDATE) Then
 58:         ' 請求書作成日による絞り込みの終了日
 59:         If Not IsDate(end_MADEDATE) Then
 60:             Err.Raise Errorcode.Err_MADEDATE, App.Title, _
                           "請求書作成日による絞り込み日時が不正です"
 61:         End If
 62:         strQuery = strQuery & " AND 請求書情報.MADEDATE <= '" & _
                        FormatDateTime(end_MADEDATE) & "'"
 63:     End If
 64:     
 65:     If Not IsNull(start_SUBMITDATE) Then
 66:         If Not IsDate(start_SUBMITDATE) Then
 67:             Err.Raise Errorcode.Err_SUBMITDATE, App.Title, _
                           "入金確認日による絞り込み日時が不正です"
 68:         End If
 69:         strQuery = strQuery & " AND 請求書情報.SUBMITDATE >= '" & _
                        FormatDateTime(start_SUBMITDATE) & "'"
 70:     End If
 71:     
 72:     If Not IsNull(end_SUBMITDATE) Then
 73:         If Not IsDate(end_SUBMITDATE) Then
 74:             Err.Raise Errorcode.Err_SUBMITDATE, App.Title, _
                           "入金確認日による絞り込み日時が不正です"
 75:         End If
 76:     End If
 77:     
 78:     ' 請求書の状態による絞り込み
 79:     
 80:     ' 削除ずみを含めるか否かの判定
 81:     If Not (Status And FILTER_BILL_DELETED) Then
 82:         ' 削除ずみを含めない
 83:         strQuery = strQuery & " AND 請求書情報.DELETEDFLAG=0"
 84:     End If
 85:     
 86:     If Status <> FILTER_BILL_ALL Then
 87:         
 88:         strQuery = strQuery & " AND ("
 89:         OrStr = ""
 90:         
 91:         If Status And FILTER_BILL_CREATED Then
 92:             ' 作成ずみの請求書だけ
 93:             strQuery = strQuery & OrStr
 94:             strQuery = strQuery & "(請求書情報.PAIDFLAG=0 " & _
                                       " AND 請求書情報.SENDBILLFLAG=0)"
 95:             OrStr = " Or "
 96:         End If
 97:         
 98:         If Status And FILTER_BILL_SEND Then
 99:             ' 送付ずみの請求書だけ
100:             strQuery = strQuery & OrStr
101:             strQuery = strQuery & "(請求書情報.SENDBILLFLAG=1)"
102:             OrStr = " Or "
103:         End If
104:         
105:         If Status And FILTER_BILL_PAID Then
106:             ' 入金ずみの請求書だけ
107:             strQuery = strQuery & OrStr
108:             strQuery = strQuery & "(請求書情報.PAIDFLAG=1)"
109:             OrStr = " Or "
110:         End If
111:         
112:         strQuery = strQuery & ")"
113:     End If
114:     
115:     
116:     ' データベースと接続し,SELECT文を発行
117:     Set objRec = CreateObject("ADODB.Recordset")
118:     
119:     ' カーソルロケーションをクライアントカーソルに設定
120:     objRec.CursorLocation = adUseClient
121:     
122:     ' SELECT文の実行
123:     objRec.Open strQuery, g_DBConnection, _
                     adOpenStatic, adLockReadOnly, adCmdText
124:     
125:     ' データベースコネクションを遮断
126:     Set objRec.ActiveConnection = Nothing
127:     
128:     ' 取得したレコードセットを戻り値とする
129:     Set GetRecords = objRec
130:     Set objRec = Nothing
131: 
132:     ' トランザクションのコミット
133:     objContext.SetComplete
134:     
135:     ' オブジェクトコンテキストの解放
136:     Set objContext = Nothing
137:     
138:     Exit Function
139: 
140: ErrHandle:
141:     ' エラーハンドラ
142:     objContext.SetAbort
143:     Set objContext = Nothing
144:     Set objRec = Nothing
145:     
146:     ' エラーの再発行
147:     Err.Raise Err.Number, Err.Source, Err.Description, _
                   Err.HelpFile, Err.HelpContext
148: End Function