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