List 7-188 FormBillFilterフォームのSetFilterプロシージャ


  1: Private OkFlag As Boolean
  2: 
  3: Public Function SetFilter(CustomerID As Variant, Status As FILTER_BILL, _
                               start_MADEDATE As Variant, end_MADEDATE As Variant, _
                               start_SUBMITDATE As Variant, end_SUBMITDATE As Variant) As Boolean
  4:     ' 絞り込み条件の設定ウィンドウを表示し,設定された情報を返す
  5:     ' 【引数】
  6:     '   CustomerID = 顧客による絞り込みをするとき,絞り込む顧客番号
  7:     '   Status = 請求書の状態による絞り込みを設定するFILTER_BILL列挙型
  8:     '   start_MADEDATE = 作成日による絞り込みをするとき,その開始日
  9:     '   end_MADEDATE = 作成日による絞り込みをするとき,その終了日
 10:     '   start_SUBMIDTATE = 入金確認日による絞り込みをするとき,その開始日
 11:     '   end_SUBMITDATE = 入金確認日による絞り込みをするとき,その終了日
 12:     '   いずれの引数も,メソッドから戻り,かつ,ユーザーが[OK]ボタンを押したとき
 13:     '   ユーザーが設定ウィンドウで設定した内容に合致するよう書き換えられる
 14:     ' 【戻り値】
 15:     '   ユーザーが[OK]ボタンを押してウィンドウを閉じたならばTrue
 16:     '   そうでなければFalse
 17:     
 18:     ' その時点の状態を設定ウィンドウに反映する
 19:     If Status And FILTER_BILL_CREATED Then
 20:         CHK_CREATED.Value = 1
 21:     Else
 22:         CHK_CREATED.Value = 0
 23:     End If
 24:     If Status And FILTER_BILL_SEND Then
 25:         CHK_SEND.Value = 1
 26:     Else
 27:         CHK_SEND.Value = 0
 28:     End If
 29:     If Status And FILTER_BILL_PAID Then
 30:         CHK_PAID.Value = 1
 31:     Else
 32:         CHK_PAID.Value = 0
 33:     End If
 34:     If Status And FILTER_BILL_DELETED Then
 35:         CHK_DELETED.Value = 1
 36:     Else
 37:         CHK_DELETED.Value = 0
 38:     End If
 39:     
 40:     If Not IsNull(start_MADEDATE) Then
 41:         TXT_MADEDATESTART.Text = FormatDateTime(start_MADEDATE, vbShortDate)
 42:     Else
 43:         TXT_MADEDATESTART.Text = ""
 44:     End If
 45:     
 46:     If Not IsNull(end_MADEDATE) Then
 47:         TXT_MADEDATEEND.Text = FormatDateTime(end_MADEDATE, vbShortDate)
 48:     Else
 49:         TXT_MADEDATEEND.Text = ""
 50:     End If
 51:     
 52:     If Not IsNull(start_SUBMITDATE) Then
 53:         TXT_SUBMITDATESTART.Text = FormatDateTime(start_SUBMITDATE, vbShortDate)
 54:     Else
 55:         TXT_SUBMITDATESTART.Text = ""
 56:     End If
 57:     
 58:     If Not IsNull(end_SUBMITDATE) Then
 59:         TXT_SUBMITDATEEND.Text = FormatDateTime(end_SUBMITDATE, vbShortDate)
 60:     Else
 61:         TXT_SUBMITDATEEND.Text = ""
 62:     End If
 63:     
 64:     If Not IsNull(CustomerID) Then
 65:         FillCombo CLng(CustomerID)
 66:         CHK_CUSTOMER.Value = 1
 67:         COMBO_CUSTOMER.Enabled = True
 68:     Else
 69:         FillCombo -1
 70:         CHK_CUSTOMER.Value = 0
 71:         COMBO_CUSTOMER.Enabled = False
 72:     End If
 73:     
 74:     ' フォームを表示する
 75:     OkFlag = False
 76:     Me.Show 1
 77:     
 78:     ' ウィンドウが閉じられたときの処理
 79:     If OkFlag Then
 80:         ' [OK]ボタンが押された
 81:         ' 設定ウィンドウにおいてユーザーが選択した内容を引数に反映する
 82:         
 83:         Status = 0
 84:         If CHK_CREATED.Value = 1 Then
 85:             Status = Status Or FILTER_BILL_CREATED
 86:         End If
 87:         If CHK_SEND.Value = 1 Then
 88:             Status = Status Or FILTER_BILL_SEND
 89:         End If
 90:         If CHK_PAID.Value = 1 Then
 91:             Status = Status Or FILTER_BILL_SEND
 92:         End If
 93:         If CHK_DELETED.Value = 1 Then
 94:             Status = Status Or FILTER_BILL_DELETED
 95:         End If
 96:         
 97:         If TXT_MADEDATESTART.Text <> "" Then
 98:             start_MADEDATE = TXT_MADEDATESTART.Text
 99:         Else
100:             start_MADEDATE = Null
101:         End If
102:         
103:         If TXT_MADEDATEEND.Text <> "" Then
104:             end_MADEDATE = TXT_MADEDATEEND.Text
105:         Else
106:             end_MADEDATE = Null
107:         End If
108:         
109:         If TXT_SUBMITDATESTART.Text <> "" Then
110:             start_SUBMITDATE = TXT_SUBMITDATESTART.Text
111:         Else
112:             start_SUBMITDATE = Null
113:         End If
114:         
115:         If TXT_SUBMITDATEEND.Text <> "" Then
116:             end_SUBMITDATE = TXT_SUBMITDATEEND.Text
117:         Else
118:             end_SUBMITDATE = Null
119:         End If
120: 
121:         If CHK_CUSTOMER.Value = 1 Then
122:             Dim listIndex
123:             listIndex = COMBO_CUSTOMER.listIndex
124:             If listIndex = -1 Then
125:                 MsgBox "顧客名が指定されていません。顧客による絞り込みは無視されます", _
                            vbOKOnly, "顧客の設定エラー"
126:                 CustomerID = -1
127:             Else
128:                 CustomerID = COMBO_CUSTOMER.ItemData(listIndex)
129:             End If
130:         Else
131:             CustomerID = Null
132:         End If
133:     End If
134: 
135:     ' 自分自身を閉じ,戻り値を設定して終了
136:     Me.Hide
137:     SetFilter = OkFlag
138: End Function