List 7-190 FormBillFilterフォームのFillComboプロシージャ


  1: Private Sub FillCombo(SetFocusID As Long)
  2:     ' 顧客名を格納するCOMBO_CUSTOMERコンボボックスに
  3:     ' その時点で登録されている顧客一覧を登録する
  4:     ' 【引数】
  5:     '   SetFucusID = コンボボックスに入れたあと,この引数に指定した
  6:     '                レコードIDを持つものが選択状態になる
  7:     ' 【戻り値】
  8:     '   なし
  9:     Dim objCustomer As Business.Customer
 10:     Dim objRec As ADODB.Recordset
 11:     Dim SelIndex As Long
 12:     
 13:     ' 顧客名の一覧を得る
 14:     On Error GoTo ErrHandle
 15:     
 16:     Set objCustomer = CreateObject("Business.Customer")
 17:     Set objRec = objCustomer.GetCustomers
 18:     
 19:     ' 取得した顧客名の一覧をコンボボックスに加える
 20:     COMBO_CUSTOMER.Clear
 21:     
 22:     SelIndex = -1
 23:     
 24:     While Not objRec.EOF
 25:         If objRec.Fields("DELETEDFLAG").Value = False Then
 26:             ' 削除ずみでなければコンボボックスに追加する
 27:             COMBO_CUSTOMER.AddItem objRec.Fields("NAME").Value
 28:             COMBO_CUSTOMER.ItemData(COMBO_CUSTOMER.NewIndex) = objRec.Fields("ID").Value
 29:             
 30:             ' 引数に指定されたのと同じ顧客番号があれば,そのインデックスを記録しておく
 31:             If objRec.Fields("ID").Value = SetFocusID Then
 32:                 SelIndex = COMBO_CUSTOMER.NewIndex
 33:             End If
 34:         End If
 35:         objRec.MoveNext
 36:     Wend
 37:     
 38:     ' 引数で指定された顧客番号を選択状態にする
 39:     COMBO_CUSTOMER.listIndex = SelIndex
 40:     
 41:     Set objRec = Nothing
 42:     Set objCustomer = Nothing
 43:     
 44:     Exit Sub
 45: 
 46: ErrHandle:
 47:     ' エラーハンドラ
 48:     MsgBox Err.Description, vbOKOnly, "絞り込みの設定エラー"
 49:     Set objCustomer = Nothing
 50:     Set objRec = Nothing
 51: End Sub