2010-09-28 5 views
16

Такого простого вопроса, но я не могу найти ответ (Google, MS помощи, SO):Определения проверяется ли флажок Access или нет

Как я могу проверить, VBA ли несвязанный флажок на форме Access проверяется пользователем или нет? Невозможно найти подходящее свойство.

Заранее благодарен!

UPDATE:

Я использовал этот код после предложений @HansUp и @RC:

Private Sub CmdTest_Click() 
    MsgBox "Check1.Value = " & Me.Check1.Value 
    MsgBox "Check2.Value = " & Me.Check2.Value 
End Sub 

Private Sub Form_Load() 
    Me.Check1.Value = 25 
    Me.Check2.Value = 50 
End Sub 

второй UPDATE:

Код должен быть это (спасибо @ David-W -Fenton):

Private Sub CmdTest_Click() 
    If Me.Check1 = True Then 
     MsgBox "Check1 IS CHECKED" 
    Else 
     MsgBox "Check1 IS NOT CHECKED" 
    End If 
    If Me.Check2 = True Then 
     MsgBox "Check2 IS CHECKED" 
    Else 
     MsgBox "Check2 IS NOT CHECKED" 
    End If  
End Sub 

Private Sub Form_Load() 
    ' set first checkbox default checked 
    Me.Check1.Value = True 
    ' set second checkbox default unchecked 
    Me.Check2.Value = False 
End Sub 

ответ

19

Флажки - это тип управления, предназначенный для одной цели, для обеспечения достоверного ввода булевых значений.

В Access существует два типа:

  1. 2-состояние - можно проверить или остановить, но не Null. Значения True (проверены) или False (не отмечены). В Access и VBA значение True равно -1, а значение False равно 0. Для переносимости с средами, использующими 1 для True, вы всегда можете проверить False или Not False, поскольку False - это значение 0 для всех сред, которые я знаю из.

  2. 3-state - как 2-состояние, но может быть Null. Щелчок на нем циклически проходит через True/False/Null. Это для привязки к целочисленному полю, которое позволяет Nulls. Это бесполезно с булевым полем, которое никогда не может быть Null.

Незначительный каламбур с ответами:

Там почти никогда необходимо использовать свойство .value из контроля доступа, так как это свойство по умолчанию. Эти два эквивалентны:

?Me!MyCheckBox.Value 
    ?Me!MyCheckBox 

только Гоча здесь является то, что очень важно быть осторожными, чтобы не создавать неявные ссылки при тестировании значения флажка. Вместо этого:

If Me!MyCheckBox Then 

... написать один из следующих вариантов:

If (Me!MyCheckBox) Then ' forces evaluation of the control 

    If Me!MyCheckBox = True Then 

    If (Me!MyCheckBox = True) Then 

    If (Me!MyCheckBox = Not False) Then 

Кроме того, при написании подпрограмм или функций, которые получают значения из булева управления, всегда объявлять логические параметры как ByVal, если только вы на самом деле хотите управлять элементом управления. В этом случае тип данных вашего параметра должен быть контролем доступа, а не логическим значением. Все остальное подвержено риску неявных ссылок.

Прежде всего, если вы установите значение флажка в коде, вы можете фактически установить его на любое число, а не только на 0 и -1, но любое число, отличное от 0, обрабатывается как True (поскольку оно не является ложным).Хотя вы можете использовать такие вещи в HTML-форме, это не правильный дизайн пользовательского интерфейса для приложения Access, поскольку пользователю не удастся увидеть, какое значение фактически хранится в элементе управления, что наносит ущерб цели выбирая его для редактирования ваших данных.

+0

Большое спасибо! (еще раз) – waanders

4

Проверьте на yourCheckBox.Value?

+0

Спасибо. Я ожидал (по способу Microsoft) свойства под названием «Проверено» или что-то в этом роде. Но никакое значение (или 0) = не проверено, а значение означает «проверено». Правильно? – waanders

+0

Насколько я помню, '.Value = True', если проверено – 2010-09-28 14:59:40

Смежные вопросы