2010-09-28 8 views
16

Câu hỏi đơn giản như vậy, nhưng tôi không thể tìm thấy câu trả lời (Google, MS help, SO):Xác định xem hộp kiểm Truy cập có được chọn hay không

Làm cách nào để kiểm tra VBA xem hộp kiểm không gắn kết trên biểu mẫu Truy cập được người dùng kiểm tra hay không? Không thể tìm thấy thuộc tính phù hợp.

Cảm ơn trước!

UPDATE:

tôi đã sử dụng mã này sau khi lời đề nghị của @HansUp và @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 

2 UPDATE:

Mã nên được điều này (nhờ @ 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 

Trả lời

19

Hộp kiểm là loại điều khiển được thiết kế cho một mục đích, để đảm bảo mục nhập hợp lệ của các giá trị Boolean.

Trong Access, có hai loại:

  1. 2-nhà nước - có thể được kiểm tra hoặc kiểm soát, nhưng không Null. Giá trị là True (được chọn) hoặc False (bỏ chọn). Trong Access và VBA giá trị True là -1 và giá trị False là 0. Đối với tính di động với môi trường sử dụng 1 cho True, bạn luôn có thể kiểm tra False hoặc False không, vì False là giá trị 0 cho tất cả các môi trường mà tôi biết của.

  2. trạng thái 3 - giống như trạng thái 2, nhưng có thể là Null. Nhấp vào nó chu kỳ thông qua True/False/Null. Điều này là để ràng buộc vào một trường số nguyên cho phép Nulls. Nó không được sử dụng với một trường Boolean, mà không bao giờ có thể là Null.

phân minh nhỏ với câu trả lời:

Hầu như không bao giờ cần phải sử dụng thuộc tính .Value của một kiểm soát truy cập, vì nó là thuộc tính mặc định. Hai số này tương đương nhau:

?Me!MyCheckBox.Value 
    ?Me!MyCheckBox 

Lưu ý duy nhất ở đây là điều quan trọng là phải cẩn thận khi bạn không tạo tham chiếu ngầm khi kiểm tra giá trị của hộp kiểm. Thay vì điều này:

If Me!MyCheckBox Then 

... viết một trong các tùy chọn này:

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 

Tương tự như vậy, khi viết chương trình con hoặc chức năng mà có giá trị từ một điều khiển Boolean, luôn luôn tuyên bố các thông số Boolean của bạn như ByVal trừ bạn thực sự muốn thao tác điều khiển. Trong trường hợp đó, kiểu dữ liệu của tham số của bạn phải là một điều khiển Access và không phải là một giá trị Boolean. Bất cứ điều gì khác đều có nguy cơ dẫn đến các tham chiếu ngầm định.

Cuối cùng, nếu bạn đặt giá trị của hộp kiểm trong mã, bạn có thể đặt giá trị đó thành bất kỳ số nào, không chỉ 0 và -1, nhưng bất kỳ số nào khác 0 được coi là True (vì nó không phải là False).Mặc dù bạn có thể sử dụng loại điều đó dưới dạng HTML, nhưng nó không phải là thiết kế giao diện người dùng thích hợp cho ứng dụng Access, vì không có cách nào để người dùng có thể xem giá trị thực sự được lưu trữ trong điều khiển. chọn nó để chỉnh sửa dữ liệu của bạn.

+0

Cảm ơn rất nhiều! (lần nữa) – waanders

4

Kiểm tra trên yourCheckBox.Value?

+0

Cảm ơn. Tôi mong đợi (theo cách của Microsoft) một tài sản được gọi là "Đã kiểm tra" hoặc một cái gì đó. Nhưng không có giá trị (hoặc 0) = không được kiểm tra và giá trị có nghĩa là 'đã chọn'. Đúng? – waanders

+0

Theo như tôi nhớ, '.Value = True' nếu được kiểm tra –