List 7-136 FormSlipFilterフォームのSetFilterプロシージャなど


  1: Private OkFlag As Boolean
  2: 
  3: Public Function SetFilter(start_MADEDATE As Variant, end_MADEDATE As Variant, _
                               start_DELIVERDATE As Variant, end_DELIVERDATE As Variant, _
                               IncludeOtherMade As Boolean, filterSlip As FILTER_SLIP, _
                               IncludeDeleted As Boolean, CustomerID As Long) As Boolean
  4:     ' 絞り込み設定のウィンドウを表示し,設定された情報を返す
  5:     ' 【引数】
  6:     '   start_MADEDATE = 起票日による絞り込みの開始日
  7:     '   end_MADEDATE = 起票日による絞り込みの終了日
  8:     '   start_DELIVERDATE = 納入予定日による絞り込みの開始日
  9:     '   end_MADEDATE = 納入予定日による絞り込みの終了日
 10:     '   IncludeOtherMade = 他人が作った伝票も含むかどうかのフラグ
 11:     '   filterSlip = 伝票の状態による絞り込みを設定するFILTER_SLIP列挙型の組み合わせ
 12:     '   IncludeDeleted = 削除ずみを含むかどうかのフラグ
 13:     '   CustomerID = 顧客による絞り込みをするとき,絞り込む顧客番号(-1のときには絞り込みなし)
 14:     '   いずれの引数も,メソッドから戻り,かつ,ユーザーが[OK]ボタンを押したときには
 15:     '   ユーザーが設定ウィンドウで設定した内容に合致するよう書き換えられる
 16:     ' 【戻り値】
 17:     '   ユーザーが[OK]ボタンを押してウィンドウを閉じたならばTrue
 18:     '   そうでなければFalse
 19:     
 20:     ' 現在の設定を設定ウィンドウに反映させる
 21:     If filterSlip And FILTER_SLIP_CREATING Then
 22:         CHK_CREATING.Value = 1
 23:     Else
 24:         CHK_CREATING.Value = 0
 25:     End If
 26:     If filterSlip And FILTER_SLIP_REQUESTINGCONSENT Then
 27:         CHK_REQUESTINGCONSENT.Value = 1
 28:     Else
 29:         CHK_REQUESTINGCONSENT.Value = 0
 30:     End If
 31:     If filterSlip And FILTER_SLIP_CONSENTED Then
 32:         CHK_CONSENTED.Value = 1
 33:     Else
 34:         CHK_CONSENTED.Value = 0
 35:     End If
 36:     If filterSlip And FILTER_SLIP_REJECTED Then
 37:         CHK_REJECTED.Value = 1
 38:     Else
 39:         CHK_REJECTED.Value = 0
 40:     End If
 41:     If filterSlip And FILTER_SLIP_SEND Then
 42:         CHK_SEND.Value = 1
 43:     Else
 44:         CHK_SEND.Value = 0
 45:     End If
 46:     If filterSlip And FILTER_SLIP_ACCOUNTED Then
 47:         CHK_ACCOUNTED.Value = 1
 48:     Else
 49:         CHK_ACCOUNTED.Value = 0
 50:     End If
 51:     If filterSlip And FILTER_SLIP_FINISH Then
 52:         CHK_FINISH.Value = 1
 53:     Else
 54:         CHK_FINISH.Value = 0
 55:     End If
 56:     
 57:     If Not IsNull(start_MADEDATE) Then
 58:         TXT_startMADEDATE.Text = FormatDateTime(start_MADEDATE, vbShortDate)
 59:     Else
 60:         TXT_startMADEDATE.Text = ""
 61:     End If
 62:     
 63:     If Not IsNull(end_MADEDATE) Then
 64:         TXT_endMADEDATE.Text = FormatDateTime(end_MADEDATE, vbShortDate)
 65:     Else
 66:         TXT_endMADEDATE.Text = ""
 67:     End If
 68:     
 69:     If Not IsNull(start_DELIVERDATE) Then
 70:         TXT_startDELIVERDATE.Text = FormatDateTime(start_DELIVERDATE, vbShortDate)
 71:     Else
 72:         TXT_startDELIVERDATE.Text = FormatDateTime(start_DELIVERDATE, vbShortDate)
 73:     End If
 74:     
 75:     If Not IsNull(end_DELIVERDATE) Then
 76:         TXT_endDELIVERDATE.Text = FormatDateTime(end_DELIVERDATE, vbShortDate)
 77:     Else
 78:         TXT_endDELIVERDATE.Text = FormatDateTime(end_DELIVERDATE, vbShortDate)
 79:     End If
 80:     
 81:     If IncludeOtherMade Then
 82:         CHK_INCLUDEOTHERMADE.Value = 1
 83:     Else
 84:         CHK_INCLUDEOTHERMADE.Value = 0
 85:     End If
 86:     
 87:     If IncludeDeleted Then
 88:         CHK_IncludeDeleted.Value = 1
 89:     Else
 90:         CHK_IncludeDeleted.Value = 0
 91:     End If
 92:     
 93:     FillCombo CustomerID
 94:     If CustomerID <> -1 Then
 95:         CHK_CUSTOMER.Value = 1
 96:         COMBO_CUSTOMER.Enabled = True
 97:     Else
 98:         CHK_CUSTOMER.Value = 0
 99:         COMBO_CUSTOMER.Enabled = False
100:     End If
101:     
102:     ' フォームを表示する
103:     OkFlag = False
104:     Me.Show 1
105:     
106:     ' ウィンドウが閉ざされたときの処理
107:     If OkFlag Then
108:         ' [OK]ボタンが押された
109:         ' 設定ウィンドウにおいてユーザーが選択した内容を引数に反映する
110:         
111:         filterSlip = 0
112:         If CHK_CREATING.Value = 1 Then
113:             filterSlip = filterSlip Or FILTER_SLIP_CREATING
114:         End If
115:         If CHK_REQUESTINGCONSENT.Value = 1 Then
116:             filterSlip = filterSlip Or FILTER_SLIP_REQUESTINGCONSENT
117:         End If
118:         If CHK_CONSENTED.Value = 1 Then
119:             filterSlip = filterSlip Or FILTER_SLIP_CONSENTED
120:         End If
121:         If CHK_REJECTED.Value = 1 Then
122:             filterSlip = filterSlip Or FILTER_SLIP_REJECTED
123:         End If
124:         If CHK_SEND.Value = 1 Then
125:             filterSlip = filterSlip Or FILTER_SLIP_SEND
126:         End If
127:         If CHK_ACCOUNTED.Value = 1 Then
128:             filterSlip = filterSlip Or FILTER_SLIP_ACCOUNTED
129:         End If
130:         If CHK_FINISH.Value = 1 Then
131:             filterSlip = filterSlip Or FILTER_SLIP_FINISH
132:         End If
133:         
134:         If TXT_startMADEDATE.Text <> "" Then
135:             start_MADEDATE = TXT_startMADEDATE.Text
136:         Else
137:             start_MADEDATE = Null
138:         End If
139:         
140:         If TXT_endMADEDATE.Text <> "" Then
141:             end_MADEDATE = TXT_endMADEDATE.Text
142:         Else
143:             end_MADEDATE = Null
144:         End If
145:         
146:         If TXT_startDELIVERDATE.Text <> "" Then
147:             start_DELIVERDATE = TXT_startDELIVERDATE.Text
148:         Else
149:             start_DELIVERDATE = Null
150:         End If
151:         
152:         If TXT_endDELIVERDATE.Text <> "" Then
153:             end_DELIVERDATE = TXT_endDELIVERDATE.Text
154:         Else
155:             end_DELIVERDATE = Null
156:         End If
157:         
158:         If CHK_INCLUDEOTHERMADE.Value = 1 Then
159:             IncludeOtherMade = True
160:         Else
161:             IncludeOtherMade = False
162:         End If
163:         
164:         If CHK_IncludeDeleted.Value = 1 Then
165:             IncludeDeleted = True
166:         Else
167:             IncludeDeleted = False
168:         End If
169:         
170:         If CHK_CUSTOMER.Value = 1 Then
171:             Dim listIndex
172:             listIndex = COMBO_CUSTOMER.listIndex
173:             If listIndex = -1 Then
174:                 MsgBox "顧客名が指定されていません。顧客による絞り込みは無視されます", _
                            vbOKOnly, "顧客の設定エラー"
175:                 CustomerID = -1
176:             Else
177:                 CustomerID = COMBO_CUSTOMER.ItemData(listIndex)
178:             End If
179:         Else
180:             CustomerID = -1
181:         End If
182:     End If
183:     
184:     ' 自分自身を閉じ,戻り値を設定して終了
185:     Me.Hide
186:     SetFilter = OkFlag
187: End Function
188:                           
189: Private Sub FillCombo(SetFocusID As Long)
190:     ' 顧客名を格納するCOMBO_CUSTOMERコンボボックスに
191:     ' 現在登録されている顧客一覧を登録する
192:     ' 【引数】
193:     '   SetFucusID = コンボボックスに入れたあと,この引数に指定した
194:     '                レコードIDを持つものが選択状態になる
195:     ' 【戻り値】
196:     '   なし
197:     Dim objCustomer As Business.Customer
198:     Dim objRec As ADODB.Recordset
199:     Dim SelIndex As Long
200:     
201:     ' 顧客名の一覧を得る
202:     On Error GoTo ErrHandle
203:     
204:     Set objCustomer = CreateObject("Business.Customer")
205:     Set objRec = objCustomer.GetCustomers
206:     
207:     ' 取得した顧客名の一覧をコンボボックスに加える
208:     COMBO_CUSTOMER.Clear
209:     
210:     SelIndex = -1
211:     
212:     While Not objRec.EOF
213:         If objRec.Fields("DELETEDFLAG").Value = False Then
214:             ' 削除ずみでなければコンボボックスに追加する
215:             COMBO_CUSTOMER.AddItem objRec.Fields("NAME").Value
216:             COMBO_CUSTOMER.ItemData(COMBO_CUSTOMER.NewIndex) = objRec.Fields("ID").Value
217:             
218:             ' 引数に指定されたのと同じ顧客番号があれば,そのインデックスを記録しておく
219:             If objRec.Fields("ID").Value = SetFocusID Then
220:                 SelIndex = COMBO_CUSTOMER.NewIndex
221:             End If
222:         End If
223:         objRec.MoveNext
224:     Wend
225:     
226:     ' 引数で指定された顧客番号を選択状態にする
227:     COMBO_CUSTOMER.listIndex = SelIndex
228:     
229:     Set objRec = Nothing
230:     Set objCustomer = Nothing
231:     
232:     Exit Sub
233: 
234: ErrHandle:
235:     ' エラーハンドラ
236:     MsgBox Err.Description, vbOKOnly, "絞り込みの設定エラー"
237:     Set objCustomer = Nothing
238:     Set objRec = Nothing
239: End Sub
240: 
241: Private Sub BTN_CANCEL_Click()
242:     ' [キャンセル]ボタンが押されたときの処理
243:     OkFlag = False
244:     Me.Hide
245: End Sub
246: 
247: Private Sub BTN_OK_Click()
248:     ' [OK]ボタンが押されたときの処理
249:     OkFlag = True
250:     Me.Hide
251: End Sub
252: 
253: Private Sub CHK_CUSTOMER_Click()
254:     If CHK_CUSTOMER.Value = 1 Then
255:         COMBO_CUSTOMER.Enabled = True
256:     Else
257:         COMBO_CUSTOMER.Enabled = False
258:     End If
259: End Sub