कैनवास ऐप में रिकॉर्ड संदर्भों और बहुरूपी लुकअप को समझें
जब आपने स्कूल में एक शोध पत्र लिखा था, तो आपने अंत में शायद अपने संदर्भों की एक सूची प्रदान की थी. आपने अपने द्वारा उपयोग की गई वास्तविक पृष्ठभूमि सामग्री की कॉपी शामिल नहीं थी, बल्कि एक वेब लिंक, पुस्तक का शीर्षक और लेखक, या अन्य जानकारी दी थी ताकि कोई व्यक्ति मूल स्रोत को ट्रैक कर सके. आपने एक ही सूची में विभिन्न प्रकार के स्रोतों को मिला-जुला दिया था, ऑडियो रिकॉर्डिंग के बगल में समाचार-पत्र के लेख, उचित संदर्भ के लिए प्रत्येक में अपने-अपने विशिष्ट विवरण के साथ. उदाहरण के लिए, विकिपीडिया आलेखों में अक्सर संदर्भों की लंबी सूची शामिल होती है.
कैनवास ऐप्स में, आप अक्सर डेटा स्रोतों से डाउनलोड किए गए रिकॉर्ड की प्रतिलिपियाँ के साथ काम करते हैं. अपनी पसंद के विशिष्ट रिकॉर्ड की पहचान करने के लिए, आप लुकअप तथा फ़िल्टर करें फ़ंक्शन और गैलरी नियंत्रण के चयनित गुण का उपयोग करते हैं. फ़िल्टर या चयनित से सभी रिकॉर्ड एक ही तालिका प्रकार के होंगे, इसलिए आप एक साधारण .फ़ील्ड नोटेशन वाले फ़ील्ड का उपयोग कर सकते हैं. इन प्रतिलिपियों में अक्सर संदर्भ जानकारी शामिल होती है ताकि आप मूल स्रोत का अद्यतन करने के लिए पैच करें फ़ंक्शन का उपयोग कर सकें.
कैनवास ऐप रिकॉर्ड संदर्भों का भी समर्थन करते हैं. बहुत कुछ शोध-पत्र के संदर्भ की तरह, एक रिकॉर्ड संदर्भ एक रिकॉर्ड को संदर्भित करता है, जिसमें इसकी पूरी प्रतिलिपि शामिल नहीं है. ऐसा संदर्भ किसी भी तालिका में रिकॉर्ड को संदर्भित कर सकता है. शोध-पत्र संदर्भों की तरह, आप एक ही कॉलम में विभिन्न तालिकाओं के रिकॉर्ड मिला सकते हैं.
रिकॉर्ड संदर्भों में कई संचालन रिकॉर्ड के साथ काम करने के समान होते हैं. आप रिकॉर्ड संदर्भों की तुलना एक दूसरे से या पूर्ण रिकॉर्ड से कर सकते हैं. आप पैच फ़ंक्शन के साथ एक रिकॉर्ड संदर्भ के मान को ठीक उसी तरह सेट कर सकते हैं जैसे आप एक पूर्ण रिकॉर्ड के साथ लुकअप को करेंगे.
एक महत्वपूर्ण उपयोग अंतर है: आप रिकॉर्ड संदर्भ के फ़ील्ड तक सीधे पहुंच नहीं सकते हैं, पहले यह स्थापित किए बिना कि यह किस तालिका को संदर्भित करता है. ऐसा इसलिए है क्योंकि कैनवास ऐप्स के लिए आवश्यक है कि आपके द्वारा सूत्र लिखने पर सभी प्रकार ज्ञात होने चाहिए. क्योंकि आपको तब तक रिकॉर्ड संदर्भ का प्रकार नहीं पता है जब तक कि ऐप न चल रहा हो, आप साधारण .फ़ील्ड नोटेशन को सीधे उपयोग नहीं कर सकते हैं. आपको पहले IsType फ़ंक्शन के साथ तालिका प्रकार को गतिशील रूप से निर्धारित करना होगा और फिर AsType के परिणाम पर .फ़ील्ड नोटेशन फ़ंक्शन का उपयोग करना होगा.
तालिका प्रकार एक तालिका में प्रत्येक रिकॉर्ड की स्कीमा को संदर्भित करता है. प्रत्येक तालिका में अलग-अलग नामों और डेटा प्रकारों के साथ फ़ील्ड का एक अनूठा सेट होता है। तालिका के प्रत्येक रिकॉर्ड को वह संरचना विरासत में मिलती है; यदि वे एक ही तालिका से आते हैं तो दो अभिलेखों में एक ही तालिका प्रकार होता है.
नोट
कैनवास ऐप्स के लिए विभिन्न प्रकार के डेटा स्रोतों से कनेक्ट करने के लिए आप कई अलग-अलग कनेक्टर से चुन सकते हैं. हालांकि, Power Apps Studio के अंदर कैनवास ऐप्स के साथ काम करते समय, Microsoft Dataverse में कॉलम को अन्य सभी डेटा स्रोतों के समान फ़ील्ड के रूप में संदर्भित किया जाता है. कॉलम का उपयोग केवल Dataverse के अंदर एक कॉलम का संदर्भ देते समय किया जाता है. अधिक जानकारी: Dataverse शब्दावली अपडेट
बहुरूपी लुकअप
Microsoft Dataverse रिकॉर्ड के बीच संबंधों का समर्थन करता है. खाता तालिका के प्रत्येक रिकॉर्ड में संपर्क तालिका में रिकॉर्ड के लिए प्राथमिक संपर्क लुकअप कॉलम होता है. लुकअप केवल संपर्क में एक रिकॉर्ड को संदर्भित कर सकता है और Teams तालिका में एक रिकॉर्ड को संदर्भित नहीं कर सकता है. वह अंतिम विस्तार महत्वपूर्ण है क्योंकि आप हमेशा जानते हैं कि लुकअप के लिए कौन से कॉलम उपलब्ध होंगे.
Dataverse बहुरूपी लुकअप का भी समर्थन करता है, जो सेट में किसी भी तालिका से रिकॉर्ड का उल्लेख कर सकता है। उदाहरण के लिए, स्वामी कॉलम उपयोगकर्ता तालिका या Teams तालिका में किसी रिकॉर्ड को संदर्भित कर सकता है. अलग-अलग रिकॉर्ड में एक ही लुकअप कॉलम अलग-अलग तालिका में रिकॉर्ड को संदर्भित कर सकता है. इस मामले में, आप हमेशा नहीं जानते कि कौन से कॉलम उपलब्ध होंगे.
कैनवस रिकॉर्ड संदर्भों को Dataverse में बहुरूपी लुकअप के साथ काम करने के लिए डिज़ाइन किया गया था. आप इस संदर्भ के बाहर भी रिकॉर्ड संदर्भों का उपयोग कर सकते हैं, दोनों अवधारणाओं में यही भिन्नता है.
अगले सेक्शन में, आप स्वामी लुकअप के साथ काम करके इन अवधारणाओं के बारे में जानना शुरू करेंगे.
रिकॉर्ड स्वामी के कॉलम दिखाएं
Dataverse की प्रत्येक तालिका में एक स्वामी कॉलम शामिल होता है. इस कॉलम को हटाया नहीं जा सकता, आप दूसरा नहीं जोड़ सकते, और इसके लिए हमेशा एक मान की जरुरत होती है.
उस कॉलम को खाता तालिका में दिखाने के लिए:
Power Apps में साइन इन करें.
बाएँ फलक बार में, डेटा > तालिकाएं चुनें.
तालिकाओं की सूची में, खाता चुनें.
ऊपरी-दाएं कोने में, फ़िल्टर सूची खोलें (जो डिफ़ॉल्ट रूप से डिफ़ॉल्ट पर सेट है) और फिर सभी चुनें.
स्वामी कॉलम दिखाई देने तक नीचे स्क्रॉल करें.
यह लुकअप कॉलम Teams तालिका या उपयोगकर्ता तालिका में से किसी रिकॉर्ड को संदर्भित कर सकता है. इन तालिकाओं के प्रत्येक रिकॉर्ड को स्वामी होने की अनुमति नहीं है; यदि आप किसी समस्या का सामना करते हैं तो समर्थित भूमिकाओं की जांच करें.
यह ग्राफ़िक खाते की एक साधारण गैलरी दिखाता है, जहां खाते तालिका को डेटा स्रोत के रूप में ऐप में जोड़ा गया है:
महत्वपूर्ण
इस पूरे विषय में, ग्राफ़िक्स में कुछ नाम और अन्य मान दिखाए गए हैं जो उन नमूना डेटा का हिस्सा नहीं हैं जो Dataverse के साथ स्थानांतरित किए जाते हैं. चरण सटीक रूप से किसी विशेष परिणाम के लिए नियंत्रणों को कॉन्फ़िगर करने का तरीका प्रदर्शित करते हैं, लेकिन आपके अनुभव आपके संगठन के डेटा के आधार पर भिन्न होंगे.
गैलरी में प्रत्येक खाते के स्वामी को दिखाने के लिए, हो सकता है कि आप ThisItem.Owner.Name सूत्र का उपयोग करना चाहें. हालांकि, टीम तालिका में नाम फ़ील्ड टीम का नाम है, और उपयोगकर्ता तालिका में नाम फ़ील्ड पूरा नाम है. जब तक आप ऐप नहीं चलाते, तब तक ऐप यह नहीं जान सकता कि आप किस प्रकार के लुकअप के साथ काम कर रहे हैं, और यह खाते तालिका में रिकॉर्ड के बीच अलग हो सकता है.
आपको एक सूत्र की आवश्यकता है जो इस अंतर के अनुसार समायोजित हो सके. आपको उन तालिका प्रकारों के लिए डेटा स्रोत भी जोड़ने होंगे जो स्वामी हो सकते हैं (इस मामले में, उपयोगकर्ता और Teams). इन तीन डेटा स्रोतों को अपने ऐप में जोड़ें:
इन डेटा स्रोतों के साथ, किसी उपयोगकर्ता या टीम का नाम प्रदर्शित करने के लिए इस सूत्र का उपयोग करें:
If( IsType( ThisItem.Owner, Teams ),
"Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
"User: " & AsType( ThisItem.Owner, Users ).'Full Name' )
इस सूत्र में, IsType फ़ंक्शन Teams तालिका के विरुद्ध स्वामी फ़ील्ड का परीक्षण करता है. यदि यह उस तालिका प्रकार का है, तो AsType फ़ंक्शन इसे टीम रिकॉर्ड में डाल देता है. इस बिंदु पर, आप .फ़ील्ड संकेतन का उपयोग करके टीम का नाम सहित टीम तालिका के सभी फ़ील्ड तक पहुंच सकते हैं. यदि IsType यह निर्धारित करता है कि स्वामी टीम तालिका में रिकॉर्ड नहीं है, तो वह फ़ील्ड उपयोगकर्ता तालिका में एक रिकॉर्ड होना चाहिए क्योंकि स्वामी फ़ील्ड जरुरी है (रिक्त नहीं हो सकता).
किसी रिकॉर्ड संदर्भ के किसी भी फ़ील्ड का उपयोग करने के लिए, आपको पहले AsType फ़ंक्शन का उपयोग करके इसे किसी विशिष्ट तालिका प्रकार में डालना होगा. आप फ़ील्ड को सीधे स्वामी फ़ील्ड से एक्सेस नहीं कर सकते क्योंकि सिस्टम नहीं जानता कि आप किस प्रकार की तालिका का उपयोग करना चाहते हैं.
यदि स्वामी फ़ील्ड अनुरोधित तालिका प्रकार से मेल नहीं खाता है, तो AsType फ़ंक्शन एक त्रुटि देता है, इसलिए आप इस सूत्र को सरल बनाने के लिए IfError फ़ंक्शन का उपयोग कर सकते हैं. सबसे पहले, प्रायोगिक सुविधा सूत्र-स्तरीय त्रुटि प्रबंधन चालू करें:
फिर पिछले सूत्र को इस के साथ बदलें:
IfError(
"Team: " & AsType( ThisItem.Owner, Teams ).'Team Name',
"User: " & AsType( ThisItem.Owner, Users ).'Full Name' )
एक स्वामी पर आधारित फ़िल्टर
बधाई - आपने एक रिकॉर्ड संदर्भ के साथ काम करने का सबसे कठिन पहलू पूरा कर लिया है. अन्य उपयोग मामले अधिक सरल हैं क्योंकि वे रिकॉर्ड की फ़ील्ड तक नहीं पहुंचते हैं. इस मामले में, फ़िल्टर करें, जिसके बारे में आप इस सेक्शन में जानेंगे.
गैलरी के ऊपर एक कॉम्बो बॉक्स नियंत्रण जोड़ें, और नए नियंत्रण के इन गुणों को सेट करें:
- आइटम्स:
Users
- SelectMultiple:
false
इस कॉम्बो बॉक्स से चुने गए विशिष्ट उपयोगकर्ता द्वारा गैलरी को फ़िल्टर करने के लिए, गैलरी के आइटम्स गुण को इस सूत्र पर सेट करें:
Filter( Accounts, Owner = ComboBox1.Selected )
महत्वपूर्ण
यदि आप चरणों का ठीक से पालन करते हैं, तो इस विषय में सटीक निर्देश दिए गए हैं. हालाँकि, यदि नियंत्रण का कोई दूसरा नाम है, तो कोई भी सूत्र जो नियंत्रण को उसके नाम से संदर्भित करता है विफल हो जाता है. यदि आप एक ही प्रकार का नियंत्रण हटाते हैं और जोड़ते हैं, तो नियंत्रण के नाम के अंत में संख्या बदल जाती है. त्रुटि दिखाने वाले किसी भी सूत्र के लिए, पुष्टि करें कि इसमें सभी नियंत्रणों के नाम सही हैं.
आपको IsType या AsType का उपयोग करने की आवश्यकता नहीं है क्योंकि आप रिकॉर्ड संदर्भों की अन्य रिकॉर्ड संदर्भों या पूर्ण रिकॉर्ड से तुलना कर रहे हैं. ऐप ComboBox1.Selected के तालिका प्रकार को जानता है क्योंकि यह उपयोगकर्ता तालिका से लिया गया है. वे खाते जिनके लिए स्वामी एक टीम है, फ़िल्टर मानदंड से मिलान नहीं करेंगे.
उपयोगकर्ता या टीम के द्वारा फ़िल्टरिंग का समर्थन करके आपको ज़्यादा विकल्प मिल सकते हैं.
गैलरी को आकार बदलकर और कॉम्बो बॉक्स को स्थानांतरित करके स्क्रीन के शीर्ष के पास कुछ जगह बनाएं, गैलरी के ऊपर एक रेडियो नियंत्रण डालें, और फिर नए नियंत्रण के लिए इन गुणों को सेट करें:
- आइटम्स:
[ "All", "Users", "Teams" ]
- लेआउट:
Layout.Horizontal
- आइटम्स:
कॉम्बो बॉक्स नियंत्रण के लिए, इस गुण को सेट करें (यदि कॉम्बो बॉक्स गायब हो जाता है, तो रेडियो नियंत्रण में उपयोगकर्ता का चयन करें):
- दृश्यमान:
Radio1.Selected.Value = "Users"
- दृश्यमान:
कॉम्बो बॉक्स नियंत्रण को कॉपी करें और चिपकाएं , प्रतिलिपि को सीधे मूल पर ले जाएं, और फिर प्रतिलिपि के लिए इन गुणों को सेट करें:
- आइटम्स:
Teams
- दृश्यमान:
Radio1.Selected.Value = "Teams"
रेडियो नियंत्रण की स्थिति के आधार पर, ऐप एक बार में केवल एक कॉम्बो बॉक्स प्रदर्शित करेगा. क्योंकि वे सीधे एक दूसरे से ऊपर हैं, वे एक ही नियंत्रण की तरह दिखाई देंगे जो अपनी सामग्री बदल देता है.
- आइटम्स:
अंत में, गैलरी नियंत्रण के आइटम्स गुण को इस सूत्र में सेट करें:
Filter( Accounts, Radio1.Selected.Value = "All" Or (Radio1.Selected.Value = "Users" And Owner = ComboBox1.Selected) Or (Radio1.Selected.Value = "Teams" And Owner = ComboBox1_1.Selected) )
इन परिवर्तनों के साथ, आप सभी रिकॉर्ड दिखा सकते हैं या किसी उपयोगकर्ता या टीम के आधार पर उन्हें फ़िल्टर कर सकते हैं:
सूत्र पूरी तरह से प्रत्यायोजन योग्य है. रेडियो-बटन मानों की तुलना करने वाला हिस्सा सभी रिकॉर्ड्स में एक स्थिरांक है और बाकी फ़िल्टर को Dataverse में भेजे जाने से पहले इसका मूल्यांकन किया जाता है.
यदि आप स्वामी के प्रकार को फ़िल्टर करना चाहते हैं, तो आप IsType फ़ंक्शन का उपयोग कर सकते हैं , लेकिन यह अभी प्रत्यायोजन योग्य नहीं है.
पैच का उपयोग करके स्वामी को अद्यतित करें
आप स्वामी फ़ील्ड को किसी भी अन्य लुकअप की तरह अद्यतित कर सकते हैं. अभी चयनित किए गए खाते के स्वामी को पहली टीम पर सेट करने के लिए:
Patch( Accounts, Gallery1.Selected, { Owner: First( Teams ) } )
यह दृष्टिकोण एक सामान्य लुकअप से अलग नहीं होता है क्योंकि ऐप First( Teams ) का प्रकार जानता है. यदि आप इसके बजाय पहला उपयोगकर्ता चाहते हैं, तो उस हिस्से को First( Users ) से बदल दें. पैच फ़ंक्शन जानता है कि स्वामी फ़ील्ड को इन दो तालिका प्रकारों में से किसी एक पर सेट किया जा सकता है.
इस क्षमता को ऐप में जोड़ने के लिए:
ट्री व्यू फलक में, रेडियो नियंत्रण और दो कॉम्बो बॉक्स नियंत्रणों का एक ही समय में चयन करें.
एलिप्सिस मेनू पर, इन आइटम्स को कॉपी करें का चयन करें.
समान मेनू पर, चिपकाएं चुनें.
कॉपी किए गए नियंत्रणों को गैलरी के दाईं ओर ले जाएं.
कॉपी किए गए रेडियोनियंत्रण का चयन करें, और फिर इन गुणों को बदलें:
- आइटम्स:
[ "Users", "Teams" ]
- डिफ़ॉल्ट:
If( IsType( Gallery1.Selected.Owner, Users ), "Users", "Teams" )
- आइटम्स:
रेडियो नियंत्रण में, उपयोगकर्ताओं का चयन करें ताकि उपयोगकर्ताओं को सूचीबद्ध करने वाला कॉम्बो बॉक्स नियंत्रण दिखाई दे.
दृश्यमान कॉम्बो बॉक्स नियंत्रण का चयन करें, और फिर DefaultSelectedItems गुण को इस सूत्र पर सेट करें:
If( IsType( Gallery1.Selected.Owner, Users ), AsType( Gallery1.Selected.Owner, Users ), Blank() )
रेडियो नियंत्रण में, टीम्स का चयन करें ताकि टीम्स को सूचीबद्ध करने वाला कॉम्बो बॉक्स नियंत्रण दिखाई दे.
उपयोगकर्ताओं के लिए अब-अदृश्य कॉम्बो बॉक्स नियंत्रण से चयन हटाने के लिए रेडियो नियंत्रण का चयन करें.
टीम्स के लिए दृश्यमान कॉम्बो बॉक्स नियंत्रण का चयन करें, और फिर इसके DefaultSelectedItems गुण को इस सूत्र पर सेट करें:
If( IsType( Gallery1.Selected.Owner, Teams ), AsType( Gallery1.Selected.Owner, Teams ), Blank() )
एक बटन नियंत्रण डालें, इसे कॉम्बो बॉक्स नियंत्रण के नीचे ले जाएं, और फिर बटन के पाठ गुण को
"Patch Owner"
पर सेट करें.बटन के OnSelect गुण को इस सूत्र पर सेट करें:
Patch( Accounts, Gallery1.Selected, { Owner: If( Radio1_1.Selected.Value = "Users", ComboBox1_2.Selected, ComboBox1_3.Selected ) } )
कॉपी किए गए रेडियो तथा कॉम्बो बॉक्स नियंत्रण, गैलरी में वर्तमान में चयनित खाते के स्वामी को दिखाते हैं. समान नियंत्रणों के साथ, आप बटन का चयन करके खाते के स्वामी को किसी भी टीम या उपयोगकर्ता पर सेट कर सकते हैं:
प्रपत्र का उपयोग करके स्वामी को दिखाएं
आप कस्टम कार्ड जोड़ कर, प्रपत्र के अंदर स्वामी फ़ील्ड को दिखा सकते हैं. इस लेखन में, आप प्रपत्र नियंत्रण से फ़ील्ड का मान नहीं बदल सकते.
एक संपादन प्रपत्र नियंत्रण डालें, और फिर इसका आकार बदलें और इसे निचले-दाएं कोने में ले जाएं.
स्क्रीन के दाईं ओर के पास गुण टैब पर, डेटा स्रोत सूची खोलें, और फिर खाते का चयन करें.
प्रपत्र के आइटम गुण को
Gallery1.Selected
पर सेट करें.स्क्रीन के दाईं ओर के पास गुण टैब पर, फ़ील्ड संपादित करें का चयन करें.
फ़ील्ड फलक में, एलिप्सिस का चयन करें और फिर एक कस्टम कार्ड जोड़ें का चयन करें.
नया कार्ड प्रपत्र नियंत्रण के निचले भाग में दिखाई देता है.
सभी पाठ को दिखाने के लिए, आवश्यकतानुसार कार्ड का आकार बदलें.
कस्टम कार्ड में लेबल नियंत्रण डालें, और फिर लेबल के पाठ गुण को उस सूत्र पर सेट करें जिसे आपने गैलरी में उपयोग किया था:
If( IsType( ThisItem.Owner, Teams ), "Team: " & AsType( ThisItem.Owner, Teams ).'Team Name', "User: " & AsType( ThisItem.Owner, Users ).'Full Name' )
गैलरी में प्रत्येक चयन के लिए, रिकॉर्ड के स्वामी सहित, खाते के अधिक फ़ील्ड प्रपत्र में दिखाई देते हैं. यदि आप पैच बटन का उपयोग करके स्वामी को बदलते हैं, तो प्रपत्र नियंत्रण भी उस परिवर्तन को दिखाता है.
ग्राहक के कॉलम दिखाएं
Dataverse में, ग्राहक लुकअप कॉलम एक और बहुरूपी लुकअप है जो स्वामी से बहुत मिलता-जुलता है.
स्वामी प्रति तालिका एक तक सीमित है, लेकिन तालिकाओं में शून्य, एक या अधिक ग्राहक लुकअप कॉलम शामिल हो सकते हैं. संपर्क सिस्टम तालिका में कंपनी का नाम कॉलम शामिल है, जो एक ग्राहक लुकअप कॉलम है.
आप नए कॉलम के लिए ग्राहक डेटा प्रकार चुनकर तालिका में अधिक ग्राहक लुकअप कॉलम जोड़ सकते हैं.
ग्राहक लुकअप फ़ील्ड खाता तालिका या संपर्क तालिका में से किसी रिकॉर्ड को संदर्भित कर सकता है. आप इन तालिकाओं के साथ IsType और AsType फ़ंक्शंस का उपयोग करेंगे, इसलिए अब उन्हें डेटा स्रोतों के रूप में जोड़ने का एक अच्छा समय है (आप टीम और उपयोगकर्ता को जगह पर छोड़ सकते हैं ).
ग्राहक और स्वामी फ़ील्ड के व्यवहार इतने समान हैं कि आप ऐप को हूबहू कॉपी कर सकते हैं ( फ़ाइल > इसके रूप में सहेजें, और फिर एक अलग नाम निर्दिष्ट करें) और ये सरल प्रतिस्थापन करे सकते हैं:
स्थान | स्वामी का नमूना | ग्राहक का नमूना |
---|---|---|
शुरू से अंत तक | स्वामी | 'ग्राहक का नाम' |
शुरू से अंत तक | उपयोगकर्ता | खाते |
शुरू से अंत तक | टीम | संपर्क |
गैलरी का आइटम्स गुण | खाते | संपर्क |
प्रपत्र का आइटम्स गुण | खाते | संपर्क |
पैचका पहला तर्क बटन के OnSelect गुण में |
खाते | संपर्क |
रेडियो के आइटम्स गुण को फ़िल्टर करें | [ "All", "Users", "Teams" ] | [ "All", "Accounts", "Contacts" ] |
रेडियो के आइटम्स गुण को पैच करें | [ "Users", "Teams" ] | [ "Accounts", "Contacts" ] |
कॉम्बो बॉक्स का दृश्यमान गुण | "उपयोगकर्ता" और "टीम्स" | "खाते" और "संपर्क" |
उदाहरण के लिए, नई गैलरी में आइटम्स गुण होना चाहिए:
Filter( Contacts,
Radio1.Selected.Value = "All"
Or (Radio1.Selected.Value = "Accounts" And 'Company Name' = ComboBox1.Selected)
Or (Radio1.Selected.Value = "Contacts" And 'Company Name' = ComboBox1_1.Selected)
)
ग्राहक और स्वामी दो महत्वपूर्ण अंतरों को गैलरी और प्रपत्र के अंदर सूत्रों में अद्यतन की आवश्यकता होती है:
जब आप इन तालिका प्रकारों को नाम से संदर्भित करते हैं तो खाते और संपर्क के बीच एक-से-कई संबंध प्राथमिकता लेते हैं. खाता के बजाय [@खाता] का उपयोग करें; संपर्क के बजाय [@संपर्क] का उपयोग करें. वैश्विक असंदिग्धता ऑपरेटर का उपयोग करके, आप सुनिश्चित करते हैं कि आप IsType और AsType में तालिका प्रकार का उल्लेख कर रहे हैं. यह समस्या केवल गैलरी और प्रपत्र नियंत्रणों के रिकॉर्ड संदर्भ में मौजूद होती है.
स्वामी फ़ील्ड में एक मान होना चाहिए, लेकिन ग्राहक फ़ील्ड रिक्त हो सकती है. प्रकार के नाम के बिना सही परिणाम दिखाने के लिए, इस मामले का IsBlank फ़ंक्शन के लिए परीक्षण करें, और इसके बजाय एक रिक्त पाठ स्ट्रिंग दिखाएं.
ये दोनों परिवर्तन एक ही सूत्र में हैं, जो प्रपत्र में कस्टम कार्ड में और साथ ही गैलरी के लेबल नियंत्रण के पाठ गुण में दिखाई देते हैं.
If( IsBlank( ThisItem.'Company Name' ), "",
IsType( ThisItem.'Company Name', Accounts ),
"Account: " & AsType( ThisItem.'Company Name', Accounts ).'Account Name',
"Contact: " & AsType( ThisItem.'Company Name', Contacts ).'Full Name'
)
इन परिवर्तनों के साथ, आप संपर्क तालिका में कंपनी का नाम फ़ील्ड देख और बदल सकते हैं.
लुकअप कॉलम के बारे में समझें
संबंधित लुकअप कॉलम उन कॉलम से थोड़ा अलग है, जिनके साथ आप इस विषय में पहले ही काम कर चुके हैं. आप इस विषय में पहले से वर्णित पैटर्न को लागू करने से शुरू करेंगे, और फिर आप अन्य तरीके सीखेंगे.
आप बस फैक्स तालिका के साथ शुरुआत कर सकते हैं. इस तालिका में एक बहुरूपी संबंधित लुकअप कॉलम है, जो खाते, संपर्क, और अन्य तालिकाओं को संदर्भित कर सकता है. आप ग्राहकों के लिए ऐप ले सकते हैं और इसे फैक्स के लिए संशोधित कर सकते हैं.
स्थान | ग्राहक का नमूना | फैक्स का नमूना |
---|---|---|
शुरू से अंत तक | 'ग्राहक का नाम' | इसके संबंध में |
गैलरी का आइटम्स गुण | संपर्क | फ़ैक्स |
प्रपत्र का आइटम्स गुण | संपर्क | फ़ैक्स |
पैचका पहला तर्क बटन के OnSelect गुण में |
संपर्क | फ़ैक्स |
फिर से, आपको एक डेटा स्रोत जोड़ना होगा: इस बार फैक्स के लिए. दृश्य टैब पर, डेटा स्रोत चुनें:
इसके बारे में के लिए के लिए एक महत्वपूर्ण अंतर यह है कि यह खाते और संपर्कों तक सीमित नहीं है. वास्तव में, तालिका की सूची कस्टम तालिका के साथ एक्सटेंसिबल है. अधिकांश ऐप इस तर्क को किसी संशोधन के बिना समायोजित कर सकते हैं, लेकिन आपको गैलरी और प्रपत्र में लेबल के लिए सूत्र को अद्यतित करना होगा:
If( IsBlank( ThisItem.Regarding ), "",
IsType( ThisItem.Regarding, Accounts ),
"Account: " & AsType( ThisItem.Regarding, Accounts ).'Account Name',
IsType( ThisItem.Regarding, Contacts ),
"Contacts: " & AsType( ThisItem.Regarding, Contacts ).'Full Name',
""
)
इन परिवर्तनों को करने के बाद, आप इसके बारे में लुकअप के साथ बिल्कुल ऐसे काम करते हैं जैसा आपने स्वामी और ग्राहक लुकअप के साथ किया था.
इसके बारे में संबंधों को समझें
इसके बारे में, स्वामी और ग्राहक से अलग होता है क्योंकि पहले वर्णन किए गए में एक-से-कई संबंध शामिल होते हैं. परिभाषा के अनुसार, एक उलटा, एक-से-कई संबंध आपको First( Accounts ).Faxes लिखने की अनुमति देता है.
आइए बैक अप लें और तालिका परिभाषाओं को देखें. Dataverse में, फ़ैक्स, कार्य, ईमेल, नोट्स, फ़ोन कॉल, पत्र और चैट जैसी तालिकाओं को गतिविधियां के रूप में निर्दिष्ट किया जाता है. आप अपनी खुद की कस्टम गतिविधि तालिकाz भी बना सकते हैं. जब आप कोई गतिविधि तालिका देखते या बनाते हैं, तो उसकी सेटिंग अधिक सेटिंग के अंतर्गत दिखाई देती हैं.
अन्य तालिकाएं किसी गतिविधि तालिका से संबंधित हो सकती हैं यदि वे तालिका की सेटिंग में गतिविधि कार्य के रूप में सक्षम हैं. खाते, संपर्क, और कई अन्य मानक तालिकाएं इस प्रकार निर्दिष्ट हैं (फिर से, अधिक सेटिंग्स के तहत).
सभी गतिविधि तालिकाओं और गतिविधि-कार्य तालिकाओं में एक अंतर्निहित संबंध होता है. यदि आप स्क्रीन के शीर्ष पर फ़िल्टर को सभी में बदलते हैं, तो फ़ैक्स तालिका को चुनें, और फिर संबंध टैब को चुनें, वे सभी तालिकाएं जो के संबंध में लक्ष्य हो सकती हैं लुकअप दिखाई देते हैं.
यदि आप खाते तालिका के लिए संबंध दिखाते हैं, तो सभी तालिकाएं जो संबंधित लुकअप फ़ील्ड का स्रोत हो सकती हैं, प्रकट होती हैं.
इन सब का क्या अर्थ है?
- जब आप सूत्र लिखते हैं, तो आपको यह विचार करना चाहिए कि गतिविधि तालिकाओं की सूची निश्चित नहीं है, और आप अपना स्वयं का बना सकते हैं. सूत्र को उस गतिविधि तालिका को उचित रूप से संभालना चाहिए जिसकी आपने अपेक्षा नहीं की थी.
- गतिविधि कार्य और गतिविधियों में एक-से-कई संबंध होते हैं. आप आसानी से उन सभी फैक्स के लिए पूछ सकते हैं जो एक खाते से संबंधित होते हैं.
ऐप में इस अवधारणा को खोजने के लिए:
अन्य स्क्रीन जोड़ें.
एक गैलरी नियंत्रण डालें, इसका आकार बदलें, और फिर इसे स्क्रीन के बाईं ओर ले जाएं.
स्क्रीन के दाईं ओर स्थित गुण टैब पर, गैलरी के आइटम्स गुण को खाते पर सेट करें.
गैलरी के लेआउट को शीर्षक पर सेट करें, और उसके बाद शीर्षक फ़ील्ड को खाते का नाम पर सेट करें.
एक दूसरी गैलरी जोड़ें, इसका आकार बदलें, और फिर इसे स्क्रीन के दाईं ओर ले जाएं.
नई गैलरी के आइटम्स गुण को
Gallery2.Selected.Faxes
पर सेट करें.यह चरण किसी दिए गए खाते के लिए फ़ैक्स की फ़िल्टर की गई सूची लौटाता है.
गैलरी के लेआउट को शीर्षक और उपशीर्षक पर सेट करें, और फिर शीर्षक फ़ील्ड को विषय फ़ील्ड (जो लोअरकेस विषय हो सकता है) दिखाने के लिए सेट करें.
जैसा आप खातों की सूची में किसी आइटम का चयन करते हैं, तो फैक्स की सूची केवल उस खाते के लिए फैक्स दिखाती है.
गतिविधि तालिका
जैसा कि पिछले सेक्शन में वर्णित किया गया है, आप किसी खाते के लिए सभी फ़ैक्स दिखा सकते हैं. हालांकि, आप किसी खाते के लिए सभी गतिविधियों को दिखा सकते हैं, जिसमें फैक्स, ईमेल संदेश, फोन कॉल और अन्य सहभागिताएं शामिल हैं.
बाद के परिदृश्य के लिए, आप गतिविधि तालिका का उपयोग करते हैं. आप तालिकाओं की सूची से फ़िल्टर को हटाने के लिए ऊपरी-दाएं कोने में सभी चालू करके इस तालिका को दिखा सकते हैं.
गतिविधि तालिका विशेष है. जब भी आप फ़ैक्स तालिका में कोई रिकॉर्ड जोड़ते हैं, तो सिस्टम गतिविधि तालिका में उन स्तंभों के साथ एक रिकॉर्ड भी बनाता है जो सभी गतिविधि तालिकाओं में समान होते हैं. उन कॉलम में से, विषय सबसे दिलचस्प में से एक है.
आप पिछले उदाहरण में केवल एक पंक्ति को बदलकर सभी गतिविधियां दिखा सकते हैं. Gallery2.Selected.Faxes
को Gallery2.Selected.Activities
से प्रतिस्थापित करें.
रिकॉर्ड गतिविधि तालिका से आ रहे हैं, लेकिन फिर भी आप IsType फ़ंक्शन का उपयोग यह पहचानने के लिए कर सकते हैं कि वे किस प्रकार की गतिविधि हैं. फिर से, इससे पहले कि आप किसी तालिका प्रकार के साथ IsType का उपयोग करें, आपको डेटा स्रोत जोड़ना होगा.
इस सूत्र का उपयोग करके, आप गैलरी के भीतर लेबल नियंत्रण में रिकॉर्ड प्रकार दिखा सकते हैं:
If( IsType( ThisItem, Faxes] ), "Fax",
IsType( ThisItem, 'Phone Calls' ), "Phone Call",
IsType( ThisItem, 'Email Messages' ), "Email Message",
IsType( ThisItem, Chats ), "Chat",
"Unknown"
)
आप विशिष्ट प्रकार की फ़ील्ड तक पहुँचने के लिए AsType का उपयोग कर सकते हैं. उदाहरण के लिए, यह सूत्र प्रत्येक गतिविधि के प्रकार को निर्धारित करता है और फोन कॉल के लिए, फोन नंबर तालिका से फोन नंबर और कॉल के निर्देश दिखाता है:
If( IsType( ThisItem, Faxes ), "Fax",
IsType( ThisItem, 'Phone Calls' ),
"Phone Call: " &
AsType( ThisItem, 'Phone Calls' ).'Phone Number' &
" (" & AsType( ThisItem, 'Phone Calls' ).Direction & ")",
IsType( ThisItem, 'Email Messages' ), "Email Message",
IsType( ThisItem, Chats ), "Chat",
"Unknown"
)
परिणामस्वरूप, ऐप गतिविधियों की एक पूरी सूची दिखाता है. विषय फ़ील्ड सभी प्रकार की गतिविधियों के लिए दिखाई देती है, चाहे सूत्र उन्हें गणना में शामिल करे या नहीं. आप जिन गतिविधि के प्रकारों के बारे जानते हैं, आप उनके प्रकार के नाम और प्रत्येक गतिविधि के बारे में प्रकार की विशिष्ट जानकारी दिखा सकते हैं.
नोट्स तालिका
अब तक, सभी संबंधित उदाहरण गतिविधियों पर आधारित रहे हैं, लेकिन नोट्स तालिका एक अन्य मामले का प्रतिनिधित्व करती है.
जब आप कोई तालिका बनाते हैं, तो आप अनुलग्नकों को सक्षम कर सकते हैं.
यदि आप अनुलग्नकों को सक्षम करने के लिए चेक बॉक्स को चुनतें हैं, तो आप नोट्स तालिका के साथ संबंधित संबंध बनाएंगे, जैसा कि यह ग्राफ़िक खाते तालिका के लिए दिखाता है:
इस अंतर के अलावा, आप इसके बारे में लुकअप का उपयोग उस प्रकार से करते हैं जिस प्रकार से आप गतिविधियों का उपयोग करते हैं. अनुलग्नकों के लिए सक्षम की गई तालिकाएं नोट्स से एक-से-अनेक संबंध रखती हैं, जैसा कि इस उदाहरण में है:
First( Accounts ).Notes
नोट
इस लेखन के समय, नोट्स तालिका के लिए संबंधित लुकअप उपलब्ध नहीं है. आप संबंधित कॉलम के आधार पर पढ़ या फ़िल्टर नहीं कर सकते हैं, और आप पैच का उपयोग करके कॉलम सेट नहीं कर सकते हैं.
हालांकि, नोट्स का एक-से-कई संबंध उपलब्ध का उल्टा उपलब्ध है, इसलिए आप ऐसे रिकॉर्ड के लिए नोट्स की सूची फ़िल्टर कर सकते हैं जो अनुलग्नकों के लिए सक्षम किया गया है. रिकॉर्ड की नोट्स तालिका में नोट जोड़ने के लिए आप संबंध फ़ंक्शन का भी उपयोग कर सकते हैं लेकिन नोट पहले बनाया जाना चाहिए, इस उदाहरण की तरह:
Relate( ThisItem.Notes, Patch( Notes, Defaults( Notes ), { Title: "A new note" } ) )
गतिविधि पक्ष
इस लेखन तक, कैनवास ऐप्स गतिविधि पक्षों का समर्थन नहीं करते हैं.
नोट
क्या आप हमें अपनी दस्तावेज़ीकरण भाषा वरीयताओं के बारे में बता सकते हैं? एक छोटा सर्वेक्षण पूरा करें. (कृपया ध्यान दें कि यह सर्वेक्षण अंग्रेज़ी में है)
सर्वेक्षण में लगभग सात मिनट लगेंगे. कोई भी व्यक्तिगत डेटा एकत्र नहीं किया जाता है (गोपनीयता कथन).
प्रतिक्रिया
https://aka.ms/ContentUserFeedback.
जल्द आ रहा है: 2024 के दौरान हम सामग्री के लिए फीडबैक तंत्र के रूप में GitHub मुद्दों को चरणबद्ध तरीके से समाप्त कर देंगे और इसे एक नई फीडबैक प्रणाली से बदल देंगे. अधिक जानकारी के लिए, देखें:के लिए प्रतिक्रिया सबमिट करें और देखें