List 6-133 DataObj.SlipコンポーネントのGetRecordsメソッド
  1: Public Function GetRecords(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) As ADODB.Recordset
  2:     ' 指定された条件に合致する伝票の一覧を返す
  3:     ' 【引数】
  4:     '   start_MADEDATE = 起票日による絞り込みの開始日(この日を含む)。
  5:     '                    Nullのときには絞り込みなし
  6:     '   end_MADEDATE =  起票日による絞り込みの終了日(この日を含む)。
  7:     '                    Nullのときには絞り込みなし
  8:     '   start_DELIVERDATE = 納入予定日による絞り込みの開始日(この日を含む)。
  9:     '                       Nullのときには絞り込みなし
 10:     '   end_DELIVERDATE = 納入予定日による絞り込みの終了日(この日を含む)。
 11:     '                     Nullのときには絞り込みなし
 12:     '   IncludeOtherMade = 他人が起票した伝票も含むかどうかのフラグ。
 13:     '                      Trueのときには含み,Falseのときには含まない
 14:     '   filterSlip = 伝票の状態による絞り込み。FILTER_SLIP列挙型の組み合わせ。
 15:     '                FILTER_SLIP_ALLのときにはすべての伝票
 16:     '   IncludeDeleted = 削除ずみを含むかどうかのフラグ。
 17:     '                    Trueで含む。Falseで含まない
 18:     ' 【戻り値】
 19:     '   条件に合致する伝票の一覧を含むADODB.Recordsetオブジェクト
 20:     '   戻り値となるADODB.Recordsetオブジェクトは読み取り専用の閉じたレコードセット
 21:     Dim objContext As ObjectContext
 22:     Dim objRec As ADODB.Recordset
 23:     Dim strQuery As String
 24:     Dim userName As String, OrStr As String
 25:     
 26:     ' オブジェクトコンテキストの取得
 27:     Set objContext = GetObjectContext()
 28:     
 29:     ' エラーハンドラの設定
 30:     On Error GoTo ErrHandle
 31:     
 32:     ' 発行するSELECT文
 33:     strQuery = "SELECT 伝票情報.ID As ID, 伝票情報.CUSTOMERID, " & _
                    "顧客情報.NAME As CUSTOMERNAME, 伝票情報.SUBTOTAL As SUBTOTAL," & _
                    "伝票情報.TAX As TAX, 伝票情報.TOTAL As TOTAL," & _
                    "伝票情報.BILLID As BILLID, 伝票情報.BILLDATE As BILLDATE," & _
                    "伝票情報.MADEBILLFLAG As MADEBILLFLAG, 伝票情報.ONEBILLFLAG As ONEBILLFLAG," & _
                    "伝票情報.REQ_CONSENTFLAG As REQ_CONSENTFLAG, 伝票情報.REQ_CONSENTDATE As REQ_CONSENTDATE," & _
                    "伝票情報.REQ_CONSENTCOMMENT As REQ_CONSENTCOMMENT, 伝票情報.CONSENTEDFLAG As CONSENTEDFLAG," & _
                    "伝票情報.CONSENTEDDATE As CONSENTEDDATE, 伝票情報.CONSENTEDCOMMENT As COMSENTEDCOMMENT," & _
                    "伝票情報.REJECTEDFLAG As REJECTEDFLAG, 伝票情報.REJECTEDDATE As REJECTEDDATE," & _
                    "伝票情報.REJECTEDCOMMENT As REJECTEDCOMMENT, 伝票情報.SENDFLAG As SENDFLAG," & _
                    "伝票情報.SENDDATE As SENDDATE, 伝票情報.SENDCOMMENT As SENDCOMMENT," & _
                    "伝票追加情報.DIVISION As DIVISION, 伝票追加情報.PERSON As PERSON," & _
                    "伝票追加情報.DELIVERDATE As DELIVERDATE, 伝票追加情報.SENT_ADDR As SENT_ADDR," & _
                    "伝票追加情報.SENT_TEL As SENT_TEL, 伝票追加情報.MEMO As MEMO," & _
                    "伝票情報.ACCOUNTINGFLAG As ACCOUNTINGFLAG, 伝票情報.ACCOUNTINGDATE As ACCOUNTINGDATE," & _
                    "伝票情報.ACCOUNTINGCOMMENT As ACCOUNTINGCOMMENT, 伝票情報.MADEDATE," & _
                    "伝票情報.MADEUSER As MADEUSER, 伝票情報.REQ_CONSENTUSER As REQ_CONSENTUSER," & _
                    "伝票情報.CONSENTEDUSER As CONSENTEDUSER, 伝票情報.REJECTEDUSER As REJECTEDUSER," & _
                    "伝票情報.SENDUSER As SENDUSER, 伝票情報.ACCOUNTINGUSER As ACCOUNTINGUSER," & _
                    "伝票情報.LASTUSER As LASTUSER, 伝票情報.LASTDATE As LASTDATE," & _
                    "伝票情報.DELETEDFLAG As DELETEDFLAG" & _
                    " FROM 伝票情報, 顧客情報, 伝票追加情報" & _
                    " WHERE 伝票情報.CUSTOMERID = 顧客情報.ID" & _
                    "   AND 伝票情報.ID = 伝票追加情報.SLIPID" & _
                    "   AND 伝票追加情報.DELETEDFLAG = 0"
 34:                
 35:     ' 絞り込みの条件式の設定
 36:     If Not IsNull(start_MADEDATE) Then
 37:         ' 起票日による絞り込みの開始日
 38:         If Not IsDate(start_MADEDATE) Then
 39:             Err.Raise Errorcode.Err_MADEDATE, App.Title, _
                           "起票日による絞り込み日時が不正です"
 40:         End If
 41:         strQuery = strQuery & " AND 伝票情報.MADEDATE >= '" & _
                        FormatDateTime(start_MADEDATE) & "'"
 42:     End If
 43:     If Not IsNull(end_MADEDATE) Then
 44:         ' 起票日による絞り込みの終了日
 45:         If Not IsDate(end_MADEDATE) Then
 46:             Err.Raise Errorcode.Err_MADEDATE, App.Title, _
                           "起票日による絞り込み日時が不正です"
 47:         End If
 48:         strQuery = strQuery & " AND 伝票情報.MADEDATE <= '" & _
                        FormatDateTime(end_MADEDATE) & "'"
 49:     End If
 50:     If Not IsNull(start_DELIVERDATE) Then
 51:         ' 納入予定日による絞り込みの開始日
 52:         If Not IsDate(start_DELIVERDATE) Then
 53:             Err.Raise Errorcode.Err_DELIVERDATE, App.Title, _
                           "納入予定日による絞り込み日時が不正です"
 54:         End If
 55:         strQuery = strQuery & " AND 伝票追加情報.DELIVERDATE >= '" & _
                        FormatDateTime(start_DELIVERDATE) & "'"
 56:     End If
 57:     If Not IsNull(end_DELIVERDATE) Then
 58:         ' 納入予定日による絞り込みの終了日
 59:         If Not IsDate(end_DELIVERDATE) Then
 60:             Err.Raise Errorcode.Err_DELIVERDATE, App.Title, _
                           "納入予定日による絞り込み日時が不正です"
 61:         End If
 62:         strQuery = strQuery & " AND 伝票追加情報.DELIVERDATE <= '" & _
                        FormatDateTime(end_DELIVERDATE) & "'"
 63:     End If
 64:     If Not IncludeOtherMade Then
 65:         ' 他人が起票した伝票は含めない
 66:         ' 呼び出したユーザーのユーザー名を取得
 67:         userName = objContext.Security.GetOriginalCallerName()
 68:         strQuery = strQuery & " AND 伝票情報.MADEUSER = '" & userName & "'"
 69:     End If
 70:     If Not IncludeDeleted Then
 71:         ' 削除ずみを含まない
 72:         strQuery = strQuery & " AND 伝票情報.DELETEDFLAG=0"
 73:     End If
 74:     
 75:     ' 伝票の状態による絞り込み
 76:     If filterSlip <> FILTER_SLIP_ALL Then
 77:         strQuery = strQuery & " AND ("
 78:         OrStr = ""
 79:         If filterSlip And FILTER_SLIP_CREATING Then
 80:             ' 作成中の伝票だけ
 81:             strQuery = strQuery & OrStr
 82:             strQuery = strQuery & "(伝票情報.MADEBILLFLAG=0" & _
                                       " AND 伝票情報.REQ_CONSENTFLAG=0" & _
                                       " AND 伝票情報.CONSENTEDFLAG=0" & _
                                       " AND 伝票情報.REJECTEDFLAG=0" & _
                                       " AND 伝票情報.SENDFLAG=0" & _
                                       " AND 伝票情報.ACCOUNTINGFLAG=0)"
 83:             OrStr = " Or "
 84:         End If
 85:         
 86:         If filterSlip And FILTER_SLIP_REJECTED Then
 87:             ' 却下された伝票だけ
 88:             strQuery = strQuery & OrStr
 89:             strQuery = strQuery & "伝票情報.REJECTEDFLAG=1"
 90:             OrStr = " Or "
 91:         End If
 92:         
 93:         If filterSlip And FILTER_SLIP_REQUESTINGCONSENT Then
 94:             ' 承認依頼中の伝票だけ
 95:             strQuery = strQuery & OrStr
 96:             strQuery = strQuery & "伝票情報.REQ_CONSENTFLAG=1"
 97:             OrStr = " Or "
 98:         End If
 99:         
100:         If filterSlip And FILTER_SLIP_CONSENTED Then
101:             ' 承認ずみの伝票だけ
102:             strQuery = strQuery & OrStr
103:             strQuery = strQuery & "伝票情報.CONSENTEDFLAG=1"
104:             OrStr = " Or "
105:         End If
106:         
107:         If filterSlip And FILTER_SLIP_SEND Then
108:             ' 発送ずみの伝票だけ
109:             strQuery = strQuery & OrStr
110:             strQuery = strQuery & "伝票情報.SENDFLAG=1"
111:             OrStr = " Or "
112:         End If
113:         
114:         If filterSlip And FILTER_SLIP_ACCOUNTED Then
115:             ' 経理確認ずみの伝票だけ
116:             strQuery = strQuery & OrStr
117:             strQuery = strQuery & "伝票情報.ACCOUNTINGFLAG=1"
118:             OrStr = " Or "
119:         End If
120:         
121:         If filterSlip And FILTER_SLIP_FINISH Then
122:             ' すべての処理が完了した伝票のみ
123:             strQuery = strQuery & OrStr
124:             strQuery = strQuery & "伝票情報.MADEBILLFLAG=1"
125:         End If
126:             
127:         strQuery = strQuery & ")"
128:     End If
129:                
130:     ' データベースと接続し,SELECT文を発行する
131:     Set objRec = CreateObject("ADODB.Recordset")
132:     ' カーソルロケーションをクライアントカーソルに設定する
133:     objRec.CursorLocation = adUseClient
134:     
135:     ' SELECT文の実行
136:     objRec.Open strQuery, g_DBConnection, adOpenStatic, _
                     adLockReadOnly, adCmdText
137:     
138:     ' データベースコネクションの切除
139:     Set objRec.ActiveConnection = Nothing
140:     
141:     ' 取得したレコードセットを戻り値とする
142:     Set GetRecords = objRec
143:     Set objRec = Nothing
144:     
145:     ' トランザクションのコミット
146:     objContext.SetComplete
147:     
148:     ' オブジェクトコンテキストの解放
149:     Set objContext = Nothing
150:     
151:     Exit Function
152: 
153: ErrHandle:
154:     ' エラーハンドラ
155:     objContext.SetAbort
156:     Set objContext = Nothing
157:     Set objRec = Nothing
158:     
159:     ' エラーの再発行
160:     Err.Raise Err.NUMBER, Err.Source, Err.Description, _
                   Err.HelpFile, Err.HelpContext
161: End Function