2010-09-28 5 views
16

इस तरह के एक सरल सवाल है, लेकिन मैं इस सवाल का जवाब नहीं मिल सकता है (गूगल, एमएस मदद, अतः):निर्धारित एक पहुँच चेकबॉक्स चयनित है या नहीं,

मैं एक प्रवेश फार्म पर कि क्या एक अबाध चेकबॉक्स VBA द्वारा जाँच कर सकते हैं उपयोगकर्ता द्वारा चेक किया गया है या नहीं? सही संपत्ति नहीं मिल रही है।

अग्रिम धन्यवाद!

अद्यतन:

मैं @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 

2 अद्यतन:

कोड होना चाहिए इस (@ डेविड-W के लिए धन्यवाद -फेंटन):

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

चेकबॉक्स एक उद्देश्य के लिए डिज़ाइन किया गया एक नियंत्रण प्रकार है, जो बूलियन मानों की वैध प्रविष्टि को बीमा करता है।

पहुँच में, दो प्रकार के होते हैं:

  1. 2-राज्य - या जाँच की जा सकती अनियंत्रित, लेकिन अशक्त नहीं। मान सही हैं (चेक किए गए हैं) या गलत (अनचेक)। एक्सेस और वीबीए में ट्रू का मान -1 है और गलत का मान 0 है। वातावरण के साथ पोर्टेबिलिटी के लिए जो सच के लिए 1 का उपयोग करता है, आप हमेशा गलत या गलत नहीं जांच सकते हैं, क्योंकि सभी वातावरण के लिए गलत 0 मान है का।

  2. 3-राज्य - 2-राज्य की तरह, लेकिन शून्य हो सकता है। ट्रू/फाल्स/नल के माध्यम से इसे चक्र पर क्लिक करना। यह एक पूर्णांक फ़ील्ड को बाध्य करने के लिए है जो नल को अनुमति देता है। यह एक बूलियन क्षेत्र के साथ कोई उपयोग नहीं है, जो कभी भी शून्य नहीं हो सकता है।

जवाब के साथ मामूली वक्रोक्ति:

वहाँ लगभग कभी नहीं के रूप में यह सामान्य प्रॉपर्टी है, एक प्रवेश नियंत्रण की .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 से अधिक किसी भी संख्या को सत्य के रूप में माना जाता है (क्योंकि यह गलत नहीं है)।जबकि आप किसी HTML फॉर्म में उस तरह की चीज़ का उपयोग कर सकते हैं, यह एक्सेस ऐप के लिए उचित यूआई डिज़ाइन नहीं है, क्योंकि उपयोगकर्ता को यह देखने में कोई तरीका नहीं है कि वास्तव में नियंत्रण में कौन सा मूल्य संग्रहीत किया जाता है, जो उद्देश्य के उद्देश्य को हरा देता है अपने डेटा को संपादित करने के लिए इसे चुनना।

+0

बहुत बहुत धन्यवाद! (फिर) – waanders

4

yourCheckBox.Value पर जांचें?

+0

धन्यवाद। मुझे उम्मीद है (माइक्रोसॉफ्ट के रास्ते में) "चेक किया गया" या कुछ नामक एक संपत्ति। लेकिन कोई मूल्य (या 0) = चेक नहीं किया गया है और एक मान का अर्थ है 'चेक'। सही? – waanders

+0

जहां तक ​​मैं remeber, '। Value = True' अगर चेक किया गया –

संबंधित मुद्दे