2009-02-12 12 views
9

मेरे पास एक्सेस 2003 में एक फॉर्म है जो केवल एक रिकॉर्ड के साथ काम करना चाहिए। मैं Cycle प्रॉपर्टी को Current Record पर सेट कर सकता हूं, लेकिन जब भी मैं एंटर दबाता हूं तो फॉर्म अगले रिकॉर्ड पर कूद जाता है। मेरा पहला विचार KeyPreview संपत्ति था, लेकिन मैं एक नहीं देख रहा हूं। मेरा दूसरा विचार शायद KeyPress या KeyUp ईवेंट है, लेकिन मैंने सोचा कि मैं अनपेक्षित परिणामों के मामले में पूछूंगा। कोई विचार?एंटर मारते समय अगले रिकॉर्ड पर जाने से रोकें?

+1

यदि आप वोट नीचे जा रहे हैं और (मैं वही व्यक्ति मानता हूं) वोट बंद करने के लिए वोट दें। कृपया टिप्पणी क्यों करें। मैं नियमित रूप से घनिष्ठ होने का आरोप लगाता हूं और यहां तक ​​कि मुझे यहां समस्या नहीं दिखाई देती है। – EBGreen

+0

मुझे समस्या भी दिखाई नहीं दे रही है। यह एक वैध प्रोग्रामिंग सवाल की तरह लगता है। इसे सिर्फ एक बेहतर शीर्षक की आवश्यकता है - जैसे अंत में "एक्सेस वीबीए" जोड़ना। –

+1

वास्तव में? मुझे लगता है कि टैग पर्याप्त थे। डेटा का डुप्लिकेशंस आमतौर पर एक बुरी चीज है। – EBGreen

उत्तर

6

साइकिल संपत्ति केवल टैब कुंजी को प्रभावित करती है।

एंटर कुंजी के व्यवहार को नियंत्रित करने के लिए जो वैश्विक संपत्ति है।

उपकरण/विकल्प पर जाएँ - कीबोर्ड टैब और "के बाद ले जाएँ दर्ज" का चयन करें "अगली फील्ड"

कुंजी दबाने और KeyDown घटनाओं है कि आप जाल दर्ज कुंजी भी उपयोग कर सकते हैं लेकिन यह है कि अधिक काम है।

+0

मजेदार, यह मेरे लिए कभी नहीं हुआ कि मेरी "उपयोगकर्ता वरीयता" मेरे आवेदन को प्रभावित कर रही थी। सौभाग्य से, मेरे उपयोगकर्ता शायद विकल्पों के माध्यम से खुदाई करने के लिए पर्याप्त समझदार नहीं हैं। यह मेरे लिए काम करता है। धन्यवाद। –

+0

यह पूरे एप्लिकेशन को प्रभावित नहीं करेगा। क्या होगा यदि आप बस कुछ रूपों पर ऐसा करना चाहते हैं, सब कुछ नहीं? "अगला फ़ील्ड" डिफ़ॉल्ट व्यवहार भी नहीं है? – BIBD

+0

आपको शायद अपने ऐप को GetOption का उपयोग करके इस विकल्प के लिए सेटिंग की जांच करनी चाहिए और यदि आप जो चाहते हैं वह नहीं है, तो इसे GetOption के साथ सेट करें। यदि आप उपयोगकर्ता की सेटिंग को मूल सेटिंग में वापस करना चाहते हैं, तो आप मूल मान को कैश करना चाहते हैं और ऐप बंद होने पर रीसेट करना चाहते हैं। –

0

साइकिल संपत्ति केवल टैब कुंजी के साथ काम करती है।

आपके द्वारा पीछा किए जा सकने वाले दो विकल्प हैं।

आप कर सकते थे जाल KeyDown में कुंजी दर्ज/KeyUp/KeyPressed
- या -
आप एक रिकॉर्ड आप उन्हें संपादन चाहते हैं कि डेटा स्रोत फ़िल्टर कर सकते हैं, और कहा कि फार्म के माध्यम से नए रिकॉर्ड जोड़ने अक्षम करें।

0

आप नीचे दिए गए कोड को अपने फॉर्म 'से पहले अपडेट' ईवेंट में जोड़ सकते हैं। यदि उपयोग अगले रिकॉर्ड में जाना चाहते हैं, तो यह उपयोगकर्ता को सहेजने के लिए कहेंगे ताकि फॉर्म को बंद कर सकें, इससे पहले कि वे किसी अन्य रिकॉर्ड में जा सकें।

Private Sub Form_BeforeUpdate(Cancel As Integer) 
    Select Case MsgBox("Save?", vbYesNo) 
     Case vbYes 
     DoCmd.Close 
     Case vbNo 
     Cancel = True 
    End Select 
    End Sub 
+1

यह कोड केवल तभी आग लग जाता है जब रिकॉर्ड अपडेट किया गया हो, इसलिए यह वास्तव में मूल समस्या का समाधान नहीं है। –

1

टैब, Alt, PgUp, PgDn, की तरह पल कुंजी पिछले क्षेत्र के बाद रिकॉर्ड (जोड़ने के अंत में दबाया जाता है दर्ज ज्यादातर), डेटाबेस ऑटो आपके द्वारा फॉर्म में दर्ज की गई सभी जानकारी सहेजता है और फ़ील्ड को मिटा देता है ताकि आप अगला मान दर्ज कर सकें। तो क्या होता है कि डेटा सहेजा जाता है लेकिन फॉर्म खाली दिखता है।

3 काम करने के लिए:

  1. फार्म साइकिल संपत्ति वर्तमान रिकॉर्ड करने के लिए निर्धारित किया है।
  2. फॉर्म कुंजी पूर्वावलोकन संपत्ति हां पर सेट है।
  3. जोड़ें निम्न रूप में KeyDown घटना के लिए कोड:

    '33 - PgUp; 34 - PgDown; 9 - Tab; 18=Alt; 13=Enter 
    
    Select Case KeyCode 
    Case 33, 34, 18, 9, 13 
    KeyCode = 0  
    Case Else 
    'Debug.Print KeyCode, Shift 
    End Select 
    

    मैंने पाया इस जबकि वेब परिशोध और कोड के लिए जिम्मेदारी क्रेडिट नहीं लेते हैं/लेकिन जहां मुझे मिल गया मैं नहीं जानता । मेरे लिये कार्य करता है!

0

यदि आप फ़ाइल पेज पर एक्सेस विकल्प में जाते हैं, तो क्लाइंट सेटिंग्स पर जाएं और पहली सेटिंग आपको यह चुनने देगी कि जब आप एंटर दबाते हैं तो आपका ध्यान कहां बदलता है। कम से कम एक्सेस 2013 में।

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