पैच फ़ंक्शन
इस पर लागू होता है: कैनवास ऐप्स मॉडल-संचालित ऐप्स Power Platform CLI डेस्कटॉप प्रवाह
डेटा स्रोत में एक या अधिक रिकॉर्ड संशोधित करता है या बनाता है या डेटा स्रोत के बाहर रिकॉर्ड मर्ज करता है.
जटिल स्थितियों में रिकॉर्ड को संशोधित करने के लिए पैच फ़ंक्शन का उपयोग करें, जैसे कि जब आप ऐसे अपडेट करते हैं जिनमें उपयोगकर्ता सहभागिता की आवश्यकता नहीं होती है या ऐसे फ़ॉर्म का उपयोग करते हैं जो एकाधिक स्क्रीन पर फैले होते हैं।
साधारण परिवर्तनों के लिए अधिक आसानी से डेटा स्रोत में रिकॉर्ड अद्यतन करने के लिए, इसके बजाय प्रपत्र संपादित करें नियंत्रण का उपयोग करें. जब आप एक प्रपत्र संपादित करें नियंत्रण जोड़ते हैं, तो आप उपयोगकर्ताओं को भरने के लिए एक प्रपत्र देते हैं और उसके बाद डेटा स्रोत में परिवर्तन सहेजते हैं. अधिक जानकारी के लिए, डेटा प्रपत्रों को समझें देखें.
Patch फ़ंक्शन का उपयोग करने का तरीका जानने के लिए यह वीडियो देखें:
अवलोकन
एक या अधिक रिकॉर्ड संशोधित करने के लिए Patch फ़ंक्शन का उपयोग करें. विशिष्ट फ़ील्ड के मान अन्य गुणों को प्रभावित किए बिना संशोधित किए जाते हैं. उदाहरण के लिए, यह सूत्र Contoso नामक ग्राहक के लिए फ़ोन नंबर बदलता है:
Patch( Customers, First( Filter( Customers, Name = "Contoso" ) ), { Phone: "1-212-555-1234" } )
रिकॉर्ड बनाने के लिए, Defaults फ़ंक्शन के साथ Patch का उपयोग करें. रिकॉर्ड बनाने और संपादित करने दोनों के लिए सिंगल स्क्रीन बनाने हेतु इस व्यवहार का उपयोग करें. उदाहरण के लिए, यह सूत्र Contoso नामक ग्राहक के लिए एक रिकॉर्ड बनाता है:
Patch( Customers, Defaults( Customers ), { Name: "Contoso" } )
यहां तक कि यदि आप डेटा स्रोत के साथ कार्य नहीं कर रहे हैं, तो भी आप दो या अधिक रिकॉर्ड मर्ज करने के लिए Patch का उपयोग कर सकते हैं. उदाहरण के लिए, यह सूत्र दो रिकॉर्ड को एक में मर्ज करता है, जो फ़ोन नंबर और Contoso के लिए स्थान दोनों की पहचान करता है:
Patch( { Name: "Contoso", Phone: "1-212-555-1234" }, { Name: "Contoso", Location: "Midtown" } )
वर्णन
डेटा स्रोत में एक रिकॉर्ड संशोधित करें या बनाएं
डेटा स्रोत के साथ इस फ़ंक्शन का उपयोग करने के लिए, डेटा स्रोत निर्दिष्ट करें और उसके बाद एक मूल रिकॉर्ड निर्दिष्ट करें:
- रिकॉर्ड संशोधित करने के लिए, मूल रिकॉर्ड को किसी डेटा स्रोत से आना चाहिए. मूल रिकॉर्ड, गैलरी के आइटम गुण के माध्यम से आया हो सकता है, जिसे संदर्भ चर में रखा गया है या किसी अन्य पथ के माध्यम से आया हो सकता है. लेकिन, आप मूल रिकॉर्ड को वापस डेटा स्रोत पर ट्रेस कर सकते हैं. यह महत्वपूर्ण है, क्योंकि रिकॉर्ड को संशोधित के लिए फिर से खोजने में मदद करने के लिए रिकॉर्ड में अतिरिक्त जानकारी शामिल होगी.
- रिकॉर्ड बनाने के लिए Defaults फ़ंक्शन का उपयोग करें, ताकि डिफ़ॉल्ट मानों वाला एक मूल रिकॉर्ड बनाया जा सके.
उसके बाद एक या अधिक ऐसे परिवर्तन रिकॉर्ड निर्दिष्ट करें, जिनमें से प्रत्येक में नए गुण मान शामिल हों, जो मूल रिकॉर्ड में गुण मानों को ओवरराइड करें. परिवर्तन रिकॉर्ड को तर्क सूची के शुरुआत से अंत तक संसाधित किया जाता है, जिसमें बाद के गुण मान पहले वालों को ओवरराइड करते हैं.
Patch का वापसी मान वह रिकॉर्ड होता है, जिसे आप संशोधित या बनाते हैं. यदि आपने एक रिकॉर्ड बनाया है, तो वापसी मान में वे गुण शामिल हो सकते हैं, जिन्हें डेटा स्रोत ने स्वचालित रूप से जनरेट किया है. हालांकि, वापसी मान संबंधित टेबल के फ़ील्ड के लिए कोई मान प्रदान नहीं करता है.
उदाहरण के लिए, आप Set(MyAccount, Patch(Accounts, First(Account), 'Account Name': "Example name"));
और उसके बाद MyAccount.'Primary Contact'.'Full Name'
का उपयोग करते हैं. इस मामले में आप पूरा नाम प्राप्त नहीं कर सकते. इसके बजाय, संबंधित टेबल की फ़ील्ड एक्सेस करने के लिए, एक अलग लुकअप का उपयोग करें जैसे कि:
LookUp(Accounts, Account = MyAccount.Account).'Primary Contact'.'Full Name'
जब आप कोई डेटा स्रोत अद्यतन करते हैं, तो एक या अधिक समस्याएँ उत्पन्न हो सकती हैं. उपयोग करें IfError और IsError से वापसी मान के साथ पैच त्रुटियों का पता लगाने और प्रतिक्रिया देने के लिए, जैसा कि त्रुटि प्रबंधन बताता है। समस्याओं की पहचान करने और जांचने के लिए, Errors फ़ंक्शन का भी उपयोग कर सकते हैं, जैसा कि डेटा स्रोतों के साथ कार्य करना में वर्णित किया गया है.
Related फ़ंक्शन में संपूर्ण रिकॉर्ड को बदलने के लिए Update फ़ंक्शन और एक रिकॉर्ड बनाने के लिए Collect फ़ंक्शन शामिल हो सकते हैं. शर्ते पर आधारित कई रिकॉर्ड के विशिष्ट गुण संशोधित करने के लिए, UpdateIf फ़ंक्शन का उपयोग करें.
डेटा स्रोत में रिकॉर्ड का सेट संशोधित करें या बनाएं
पैच का उपयोग एकल कॉल के साथ कई रिकॉर्ड बनाने या संशोधित करने के लिए भी किया जा सकता है।
एकल मूल रिकॉर्ड पास करने के बजाय, दूसरे तर्क में मूल रिकॉर्ड की एक तालिका प्रदान की जा सकती है. मूल रिकॉर्ड के साथ एक-के-लिए-एक तालिका में भी परिवर्तन रिकॉर्ड प्रदान किए जाते हैं. प्रत्येक परिवर्तन तालिका में रिकॉर्ड की संख्या, मूल तालिका में रिकॉर्ड की संख्या के समान होनी चाहिए.
इस तरीके से Patch का उपयोग करने पर, वापसी मान भी एक तालिका होता है, जिसमें प्रत्येक रिकॉर्ड एक-के-लिए-एक मूल और परिवर्तन रिकॉर्ड के संगत होते हैं.
डेटा स्रोत के बाहर रिकॉर्ड मर्ज करें
ऐसे दो या अधिक रिकॉर्ड निर्दिष्ट करें, जिन्हें आप मर्ज करना चाहते हैं. रिकॉर्ड को तर्क सूची के शुरुआत से अंत तक संसाधित किया जाता है, जिसमें बाद के गुण मान पहले वालों को ओवरराइड करते हैं.
पैच मर्ज किए गए रिकॉर्ड को लौटाता है और किसी भी डेटा स्रोत में इसके तर्कों या रिकॉर्ड को संशोधित नहीं करता है।
सिंटैक्स
डेटा स्रोत में एक रिकॉर्ड संशोधित करें या बनाएं
पैच( डेटा स्रोत, बेसरिकॉर्ड, ChangeRecord1 [, ChangeRecord2, … ])
- डेटा स्रोत – आवश्यक. वह डेटा स्रोत, जिसमें वह रिकॉर्ड शामिल है, जिसे आप संशोधित करना चाहते हैं या वह रिकॉर्ड शामिल होगा, जिसे आप बनाना चाहते हैं.
- बेसरिकॉर्ड - आवश्यक। संशोधित या बनाए जाने वाला रिकॉर्ड. यदि रिकॉर्ड डेटा स्रोत से आया है, तो रिकॉर्ड पाया गया और संशोधित किया गया होता है. यदि Defaults के परिणाम का उपयोग किया जाता है, तो एक रिकॉर्ड बनाया जाता है.
- ChangeRecords – आवश्यक. एक या अधिक रिकॉर्ड, जिनमें BaseRecord में संशोधित किए जाने वाले गुण शामिल हैं. परिवर्तन रिकॉर्ड को तर्क सूची के शुरुआत से अंत तक संसाधित किया जाता है, जिसमें बाद के गुण मान पहले वालों को ओवरराइड करते हैं.
डेटा स्रोत में रिकॉर्ड का सेट संशोधित करें या बनाएं
पैच( डेटा स्रोत, बेसरिकॉर्डटेबल, ChangeRecordTable1 [, ChangeRecordTable2, … ] )
- डेटा स्रोत – आवश्यक. वह डेटा स्रोत, जिसमें वे रिकॉर्ड शामिल हैं, जिसे आप संशोधित करना चाहते हैं या वे रिकॉर्ड शामिल होंगे, जिन्हें आप बनाना चाहते हैं.
- BaseRecordTable - आवश्यक। संशोधित या बनाए जाने वाले रिकॉर्ड की तालिका. यदि रिकॉर्ड डेटा स्रोत से आया है, तो रिकॉर्ड पाया गया और संशोधित किया गया होता है. यदि Defaults के परिणाम का उपयोग किया जाता है, तो एक रिकॉर्ड बनाया जाता है.
- ChangeRecordTables – आवश्यक. रिकॉर्ड की एक या अधिक तालिकाएँ, जिनमें BaseRecordTable के प्रत्येक रिकॉर्ड के लिए संशोधित किए जाने वाले गुण हैं. परिवर्तन रिकॉर्ड को तर्क सूची के शुरुआत से अंत तक संसाधित किया जाता है, जिसमें बाद के गुण मान पहले वालों को ओवरराइड करते हैं.
रिकॉर्ड को मर्ज करें
पैच( रिकॉर्ड1, रिकॉर्ड2 [, …] )
- रिकॉर्ड्स - आवश्यक. ऐसे कम से कम दो रिकॉर्ड, जिन्हें आप मर्ज करना चाहते हैं. रिकॉर्ड को तर्क सूची के शुरुआत से अंत तक संसाधित किया जाता है, जिसमें बाद के गुण मान पहले वालों को ओवरराइड करते हैं.
उदाहरण
रिकॉर्ड संशोधित करें या बनाएं (डेटा स्रोत में)
इन उदाहरणों में, आप IceCream नामक डेटा स्रोत में रिकॉर्ड संशोधित करेंगे या बनाएंगे, जिसमें इस तालिका में डेटा शामिल होता है और जो IDस्तंभ में स्वचालित रूप से मान जनरेट करता है:
सूत्र | विवरण | परिणाम |
---|---|---|
पैच( आइसक्रीम, LookUp( IceCream, Flavor = "Chocolate" ), { Quantity: 400 } ) |
IceCream डेटा स्रोत में रिकॉर्ड संशोधित करता है:
|
{ ID: 1, Flavor: "Chocolate", Quantity: 400 } IceCream डेटा स्रोत में Chocolate प्रविष्टि संशोधित की गई. |
पैच( आइसक्रीम, डिफ़ॉल्ट( आइसक्रीम ), { स्वाद: "स्ट्रॉबेरी" } ) | IceCream डेटा स्रोत में एक रिकॉर्ड बनाता है:
|
{ ID: 3, Flavor: "Strawberry", Quantity: 0 } IceCream डेटा स्रोत में Strawberry प्रविष्टि बनाई गई. |
पिछले सूत्रों के मूल्यांकन के बाद, डेटा स्रोत इन मान से समाप्त होता है:
रिकॉर्ड मर्ज करें (डेटा स्रोत के बाहर)
सूत्र | विवरण | परिणाम |
---|---|---|
पैच( { नाम: "जेम्स", स्कोर: 90 }, { नाम: "जिम", उत्तीर्ण: सत्य } ) | डेटा स्रोत के बाहर दो रिकॉर्ड मर्ज करें:
|
{ Name: "Jim", Score: 90, Passed: true } |
के रूप में या ThisRecord का इस्तेमाल
सूत्र में के रूप में या ThisRecord कीवर्ड का इस्तेमाल अस्पष्ट मूल्यांकन के संदर्भ से बचता है.
निम्न उदाहरण में, If
कथन में पहले लुकअप पर विचार करें. (OrderID = A[@OrderID])
लुकअप स्कोप में OrderId
की तुलना स्कोप में OrderId
संग्रह A
के साथ करने की अपेक्षा की जाती है। ForAll
इस स्थिति में, आप चाहते हैं कि स्थानीय मापदंड के रूप में `A[@OrderId]
` का समाधान किया जाए. लेकिन यह अस्पष्ट है.
Power Apps वर्तमान में लुकअप स्कोप में फ़ील्ड के रूप में बायीं ओर OrderId
और राइट-हैंड साइड `A[@OrderId]
दोनों की व्याख्या करता है. इसलिए, लुकअप हमेशा [dbo].[Orders1]
में पहली पंक्ति पाएगा क्योंकि स्थिति हमेशा सही होती है (अर्थात, किसी भी पंक्ति का OrderId
स्वयं के बराबर है.)
ClearCollect(
A,
Filter(
'[dbo].[Orders1]',
OrderId = 8888888
)
);
ForAll(
A,
If(
LookUp(
'[dbo].[Orders1]',
OrderId = A[@OrderId],
"OK"
) = "OK",
Patch(
'[dbo].[Orders1]',
LookUp(
'[dbo].[Orders1]',
OrderId = A[@OrderId]
),
{
OrderName: "val1"
}
),
Patch(
'[dbo].[Orders1]',
Defaults('[dbo].[Orders1]'),
{
OrderName: "val2"
}
)
)
)
के रूप में या ThisRecord का इस्तेमाल
जब भी संभव हो के रूप में में संचालक या ThisRecord बायीं ओर को स्पष्ट करने के लिए इस्तेमाल करें. जैसा कि उपरोक्त परिदृश्य के लिए अनुशंसित है।
जब आपका सूत्र समान डेटा स्रोत या तालिका पर ForAll
, Filter
, और Lookup
के साथ कई स्कोप इस्तेमाल करता है तो यह संभव है कि स्कोप मापदंड समान फ़ील्ड के साथ कहीं और परस्पर-विरोधी हो सकते हैं. इसलिए सुझाव दिया जाता है कि के रूप में में संचालक या ThisRecord को फ़ील्ड नाम हल करने और अस्पष्टता दूर करने के लिए इस्तेमाल करें.
उदाहरण के लिए, आप नीचे दिए गए उदाहरण में खंडन करने के लिए के रूप में संचालक का इस्तेमाल कर सकते हैं.
ClearCollect(
A,
Filter(
'[dbo].[Orders1]',
OrderId = 8888888
)
);
ForAll(
A,
If(
LookUp(
'[dbo].[Orders1]' As B,
B.OrderId = A[@OrderId],
"OK"
) = "OK",
Patch(
'[dbo].[Orders1]',
LookUp(
'[dbo].[Orders1]' As C,
C.OrderId = A[@OrderId]
),
{
OrderName: "val1"
}
),
Patch(
'[dbo].[Orders1]',
Defaults('[dbo].[Orders1]'),
{
OrderName: "val2"
}
)
)
)
वैकल्पिक रूप से, आप समान उद्देश्य के लिए ThisRecord इस्तेमाल कर सकते हैं.
ClearCollect(
A,
Filter(
'[dbo].[Orders1]',
OrderId = 8888888
)
);
ForAll(
A,
If(
LookUp(
'[dbo].[Orders1]',
ThisRecord.OrderId = A[@OrderId],
"OK"
) = "OK",
Patch(
'[dbo].[Orders1]',
LookUp(
'[dbo].[Orders1]',
ThisRecord.OrderId = A[@OrderId]
),
{
OrderName: "val1"
}
),
Patch(
'[dbo].[Orders1]',
Defaults('[dbo].[Orders1]'),
{
OrderName: "val2"
}
)
)
)
के रूप में में संचालक या या ThisRecord के बारे में और जानकारी के लिए पसंदीदा.