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