Прочитать на английском

Поделиться через


Объект ComboBox (Access)

Этот объект соответствует элементу управления поле со списком. Элемент управления "Поле со списком" объединяет в себе функции текстового поля и списка. Используйте поле со списком, если требуется ввести значение или выбрать значение из предопределенного списка.

Замечания

Управление Средство
Элемент управления Поле со списком

В представлении формы Microsoft Access не отображает список, пока вы не щелкете стрелку поля со списком.

Если у вас есть мастера управления, прежде чем выбрать средство со списком, вы можете создать поле со списком с помощью мастера. Чтобы включить или отключить мастеры управления, щелкните инструмент Мастеры управления на панели элементов.

Параметр свойства LimitToList определяет, можно ли вводить значения, которых нет в списке.

Список может быть одним или несколькими столбцами, а столбцы могут отображаться с заголовками или без.

Пример

В следующем примере показано, как использовать несколько элементов управления ComboBox для предоставления условий для запроса.

Private Sub cmdSearch_Click()
    Dim db As Database
    Dim qd As QueryDef
    Dim vWhere As Variant
    
    Set db = CurrentDb()
    
    On Error Resume Next
    db.QueryDefs.Delete "Query1"
    On Error GoTo 0
    
    vWhere = Null
    vWhere = vWhere & " AND [PymtTypeID]=" & Me.cboPaymentTypes
    vWhere = vWhere & " AND [RefundTypeID]=" & Me.cboRefundType
    vWhere = vWhere & " AND [RefundCDMID]=" & Me.cboRefundCDM
    vWhere = vWhere & " AND [RefundOptionID]=" & Me.cboRefundOption
    vWhere = vWhere & " AND [RefundCodeID]=" & Me.cboRefundCode
    
    If Nz(vWhere, "") = "" Then
        MsgBox "There are no search criteria selected." & vbCrLf & vbCrLf & _
        "Search Cancelled.", vbInformation, "Search Canceled."
        
    Else
        Set qd = db.CreateQueryDef("Query1", "SELECT * FROM tblRefundData WHERE " & _
        Mid(vWhere, 6))
        
        db.Close
        Set db = Nothing
        
        DoCmd.OpenQuery "Query1", acViewNormal, acReadOnly
    End If
End Sub

В следующем примере показано, как задать свойство RowSource поля со списком при загрузке формы. При отображении формы элементы, хранящиеся в поле Отделы поля со списком tblDepartment , отображаются в поле со списком cboDept .

Private Sub Form_Load()
    Me.Caption = "Today is " & Format$(Date, "dddd mmm-d-yyyy")
    Me.RecordSource = "tblDepartments"
    DoCmd.Maximize  
    txtDept.ControlSource = "Department"
    cmdClose.Caption = "&Close"
    cboDept.RowSourceType = "Table/Query"
    cboDept.RowSource = "SELECT Department FROM tblDepartments"
End Sub

В следующем примере показано, как создать поле со списком, привязанное к одному столбцу при отображении другого. Если для свойства ColumnCount задано значение 2, в поле со списком cboDept будут отображаться первые два столбца источника данных, заданного свойством RowSource . Если для свойства BoundColumn задано значение 1, то при проверке значения поля со списком будет возвращено значение, хранящееся в первом столбце.

Свойство ColumnWidths указывает ширину двух столбцов. Если задать ширину первого столбца в 0in., первый столбец не отображается в поле со списком.

Private Sub cboDept_Enter()
    With cboDept
        .RowSource = "SELECT * FROM tblDepartments ORDER BY Department"
        .ColumnCount = 2
        .BoundColumn = 1
        .ColumnWidths = "0in.;1in."
    End With
End Sub

В следующем примере показано, как добавить элемент в связанное поле со списком.

Private Sub cboMainCategory_NotInList(NewData As String, Response As Integer)

    On Error GoTo Error_Handler
    Dim intAnswer As Integer
    intAnswer = MsgBox("""" & NewData & """ is not an approved category. " & vbcrlf _
        & "Do you want to add it now?", vbYesNo + vbQuestion, "Invalid Category")

    Select Case intAnswer
        Case vbYes
            DoCmd.SetWarnings False
            DoCmd.RunSQL "INSERT INTO tlkpCategoryNotInList (Category) " & _ 
                         "Select """ & NewData & """;"
            DoCmd.SetWarnings True
            Response = acDataErrAdded
        Case vbNo
            MsgBox "Please select an item from the list.", _
                vbExclamation + vbOKOnly, "Invalid Entry"
            Response = acDataErrContinue

    End Select

    Exit_Procedure:
        DoCmd.SetWarnings True
        Exit Sub

    Error_Handler:
        MsgBox Err.Number & ", " & Err.Description
        Resume Exit_Procedure
        Resume

End Sub

События

Методы

Свойства

См. также

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.