त्रुटियाँ कार्य करती हैं

इन पर लागू होता है: कैनवास ऐप्स मॉडल-संचालित ऐप्स

पिछले परिवर्तनों के लिए त्रुटि जानकारी एक डेटा स्रोत को प्रदान करता है.

अवलोकन

जब डेटा स्रोत का कोई रिकॉर्ड परिवर्तित होता है, तो त्रुटियाँ हो सकती हैं. इसके कई कारण संभव हैं, जिसमें नेटवर्क आउटेज, अपर्याप्त अनुमति और संपादन विरोध शामिल हैं.

डेटा स्रोत में डेटा संशोधित करने वाले फ़ंक्शन, जैसे कि Patch, Collect, Remove, RemoveIf, Update, UpdateIf, and SubmitForm दो तरीकों में त्रुटियों की रिपोर्ट करते हैं:

  • इनमें से प्रत्येक फ़ंक्शन ऑपरेशन के परिणाम के रूप में एक त्रुटि मान लौटाएगा. IsError के साथ त्रुटियों का पता लगाया जा सकता है और हमेशा की तरह IfError और App.OnError से प्रतिस्थापित किया या छुपाया जा सकता है. अधिक जानकारी के लिए त्रुटि संभालना देखें.
  • कार्रवाई के बाद, Errors फ़ंक्शन भी पिछले कार्यों की त्रुटियाँ लौटाएगा. यह स्थिति वेरिएबल में त्रुटि को कैप्चर करने की आवश्यकता के बिना प्रपत्र स्क्रीन पर त्रुटि संदेश प्रदर्शित करने के लिए उपयोगी हो सकता है.

आप Validate और DataSourceInfo फ़ंक्शन के उपयोग द्वारा कुछ त्रुटियाँ होने से बच सकते हैं. त्रुटियों के साथ कार्य करने और इनसे बचने के तरीकों के बारे में अधिक सुझावों के लिए डेटा स्रोतों के साथ कार्य करना देखें.

वर्णन

Errors फ़ंक्शन त्रुटियों की एक तालिका देता है, जिसमें निम्न स्तंभ शामिल होते हैं:

  • रिकॉर्ड. डेटा स्रोत में रिकॉर्ड, जिसमें त्रुटि हुई थी. यदि रिकॉर्ड बनाने के दौरान त्रुटि हुई है, तो यह स्तंभ रिक्त होगा.
  • स्तंभ. वह स्तंभ, जिसके कारण त्रुटि हुई, यदि त्रुटि को एकल स्तंभ में एट्रिब्यूट किया जा सकता है. यदि नहीं, तो यह रिक्त होगा.
  • संदेश. त्रुटि का विवरण. यह त्रुटि स्ट्रिंग अंतिम उपयोगकर्ता के लिए प्रदर्शित की जा सकती है. ध्यान रखें कि यह संदेश डेटा स्रोत द्वारा जनरेट किया जा सकता है, हो सकता है कि यह लंबा हो और इसमें अपरिष्कृत स्तंभ नाम शामिल हों, जिनका उपयोगकर्ता के लिए कोई अर्थ न हो.
  • त्रुटि. त्रुटि कोड जिसका उपयोग त्रुटि का समाधान करने के लिए सूत्रों में किया जा सकता है:
ErrorKind वर्णन
ErrorKind.Conflict समान रिकॉर्ड पर एक अन्य परिवर्तन किया गया, जिसके परिणामस्वरूप एक परिवर्तन विरोध हुआ. रिकॉर्ड को पुनः लोड करने के लिए Refresh फ़ंक्शन का उपयोग करें और परिवर्तन करने का पुनः प्रयास करें.
ErrorKind.ConstraintViolation एक या अधिक बाधाओं का उल्लंघन किया गया है.
ErrorKind.CreatePermission रिकॉर्ड बनाने का प्रयास किया गया था, और वर्तमान उपयोगकर्ता के पास रिकॉर्ड बनाने की अनुमति नहीं है.
ErrorKind.DeletePermission रिकॉर्ड हटाने का प्रयास किया गया था, और वर्तमान उपयोगकर्ता के पास रिकॉर्ड हटाने की अनुमति नहीं है.
ErrorKind.EditPermission रिकॉर्ड संपादित करने का प्रयास किया गया था, और वर्तमान उपयोगकर्ता के पास रिकॉर्ड संपादित करने की अनुमति नहीं है.
ErrorKind.GeneratedValue उस स्तंभ को परिवर्तित करने का प्रयास किया गया था, जिसे डेटा स्रोत स्वचालित रूप से उत्पन्न करता है.
ErrorKind.MissingRequired आवश्यक स्तंभ का मान रिकॉर्ड से गायब है.
ErrorKind.None कोई त्रुटि नहीं है.
ErrorKind.NotFound रिकॉर्ड को संपादित करने या हटाने का प्रयास किया गया था, परंतु रिकॉर्ड नहीं मिला. हो सकता है कि किसी अन्य उपयोगकर्ता ने रिकॉर्ड परिवर्तित कर दिया हो.
ErrorKind.ReadOnlyValue उस स्तंभ को परिवर्तित करने का प्रयास किया गया था, जो केवल पठन के लिए है.
ErrorKind.Sync डेटा स्रोत द्वारा एक त्रुटि रिपोर्ट की गई थी. अधिक जानकारी के लिए संदेश स्तंभ देखें.
ErrorKind.Unknown एक त्रुटि थी, लेकिन एक अज्ञात प्रकार की थी.
ErrorKind.Validation एक सामान्य सत्यापन समस्या का पता चला था, जो किसी अन्य प्रकार में फ़िट नहीं हुआ.

त्रुटियाँ पूरे डेटा स्रोत के लिए, या केवल फ़ंक्शन पर रिकॉर्ड तर्क प्रदान कर चयनित पंक्ति के लिए मिल सकती हैं.

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

यदि कोई त्रुटि नहीं है, Errors देने वाली तालिका रिक्त होगी और इसका परीक्षण IsEmpty फ़ंक्शन द्वारा किया जा सकता है.

सिंटैक्स

Errors( DataSource [, Record ] )

  • DataSource – आवश्यक है. वह डेटा स्रोत, जिसके लिए आप त्रुटियाँ देना चाहते हैं.
  • Record – वैकल्पिक. वह विशिष्ट रिकॉर्ड, जिसके लिए आप त्रुटियाँ देना चाहते हैं. यदि आप इस तर्क को निर्दिष्ट नहीं करते, तो यह फ़ंक्शन पूरे डेटा स्रोत के लिए त्रुटियाँ देता है.

उदाहरण

चरण दर चरण

इस उदाहरण के लिए, हम IceCream डेटा स्रोत के साथ कार्य करेंगे:

आइसक्रीम।

ऐप के माध्यम से, एक उपयोगकर्ता डेटा-प्रविष्टि प्रपत्र में Chocolate रिकॉर्ड लोड करता है और फिर Quantity को 90 पर परिवर्तित करता है. जिस रिकॉर्ड के साथ काम किया जाना है, वह संदर्भ वेरिएबलEditRecord में रखा जाता है:

  • UpdateContext( { EditRecord: LookUp( IceCream, Flavor = "Chocolate" ) } )

डेटा स्रोत में यह परिवर्तन करने के लिए, Patch फ़ंक्शन का उपयोग किया जाता है:

  • Patch( IceCream, EditRecord, Gallery.Updates )

जहाँ Gallery.Updates{ Quantity: 90 } पर मूल्यांकन करता है, चूँकि केवल Quantity गुण को संशोधित किया गया है.

दुर्भाग्य से, Patch फ़ंक्शन को इनवोक किए जाने से ठीक पहले, किसी अन्य व्यक्ति ने Chocolate के लिए Quantity को 80 पर संशोधित कर दिया. Power Apps इसका पता लगाएगा और विरोधी परिवर्तनों को होने की अनुमति नहीं देगा. आप इस स्थिति को निम्न सूत्र द्वारा जाँच सकते हैं:

  • IsEmpty( Errors( IceCream, EditRecord ) )

जो गलत देता है, क्योंकि Errors फ़ंक्शन ने निम्न तालिका दी थी:

रिकॉर्ड स्तंभ संदेश त्रुटि
{ Flavor: "Chocolate", Quantity: 100 } रिक्त "आप जिस रिकॉर्ड को संशोधित करने का प्रयास कर रहे हैं, उसे एक अन्य उपयोगकर्ता ने संशोधित कर दिया है. कृपया रिकॉर्ड को पुनः लोड करें और पुनः प्रयास करें." ErrorKind.Conflict

आप प्रपत्र पर एक लेबल रख सकते हैं ताकि उपयोगकर्ता को यह त्रुटि दिखाई जा सके.

  • त्रुटि दिखाने के लिए, लेबल के Text गुण को इस सूत्र पर सेट करें:
    Label.Text = First(Errors( IceCream, EditRecord )).Message

आप प्रपत्र पर एक पुनः लोड करें बटन भी जोड़ सकते हैं, ताकि उपयोगकर्ता कुशलता से विरोध का समाधान कर सके.

  • बटन को केवल तब दिखाने के लिए, जब विरोध हो गया है, बटन के Visible गुण को इस सूत्र पर सेट करें:
    !IsEmpty( Lookup( Errors( IceCream, EditRecord ), Error = ErrorKind.Conflict ) )
  • उपयोगकर्ता द्वारा बटन चयन करने किए गए परिवर्तनों को वापस करने के लिए, इसके OnSelect गुण को इस सूत्र पर सेट करें:
    ReloadButton.OnSelect = Revert( IceCream, EditRecord )