Ответ 1
Флажки - это тип управления, предназначенный для одной цели, для обеспечения правильной записи логических значений.
В Access существует два типа:
-
2-state - можно проверить или снять флажок, но не Null. Значения True (проверены) или False (не отмечены). В Access и VBA значение True равно -1, а значение False равно 0. Для переносимости с средами, использующими 1 для True, вы всегда можете проверить False или Not False, поскольку False - это значение 0 для всех сред, которые я знаю из.
-
3-state - как 2-состояние, но может быть Null. Щелчок на нем циклически проходит через True/False/Null. Это для привязки к целочисленному полю, которое позволяет Nulls. Это бесполезно с булевым полем, которое никогда не может быть Null.
Малый вопрос с ответами:
Практически никогда не нужно использовать свойство .Value элемента управления Access, поскольку это свойство по умолчанию. Эти два эквивалента:
?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, так как нет никакого способа, чтобы пользователь мог видеть, какое значение фактически хранится в элементе управления, что побеждает цель выбрав его для редактирования ваших данных.