Patch फलन

इस पर लागू होता है: कैनवास ऐप्लिकेशन Copilot Studio Desktop flows मॉडल-चालित ऐप्लिकेशन Power Platform CLI Dataverse फ़ंक्शंस

डेटा स्रोत में एक या अधिक रिकॉर्ड संशोधित करता है या बनाता है या डेटा स्रोत के बाहर रिकॉर्ड मर्ज करता है.

जटिल स्थितियों में रिकॉर्ड को संशोधित करने के लिए फ़ंक्शन का Patch उपयोग करें, जैसे कि जब आप ऐसे अद्यतन करते हैं जिनके लिए किसी उपयोगकर्ता सहभागिता की आवश्यकता नहीं होती है या एकाधिक स्क्रीन वाले प्रपत्रों का उपयोग करते हैं.

साधारण परिवर्तनों के लिए अधिक आसानी से डेटा स्रोत में रिकॉर्ड अद्यतन करने के लिए, इसके बजाय प्रपत्र संपादित करें नियंत्रण का उपयोग करें. जब आप एक प्रपत्र संपादित करें नियंत्रण जोड़ते हैं, तो आप उपयोगकर्ताओं को भरने के लिए एक प्रपत्र देते हैं और उसके बाद डेटा स्रोत में परिवर्तन सहेजते हैं. अधिक जानकारी के लिए, डेटा प्रपत्रों को समझें देखें.

फ़ंक्शन का Patch उपयोग करने का तरीका जानने के लिए यह वीडियो देखें:

Overview

किसी डेटा स्रोत के एक या अधिक रिकॉर्ड्स को संशोधित करने के लिए फ़ंक्शन का Patch उपयोग करें. यह अन्य गुणों को प्रभावित किए बिना विशिष्ट क्षेत्रों के मूल्यों को अपडेट करता है। उदाहरण के लिए, यह सूत्र Contoso नामक ग्राहक के लिए फ़ोन नंबर बदलता है:

Patch( Customers, LookUp( Customers, Name = "Contoso" ), { Phone: "1-212-555-1234" } )

रिकॉर्ड बनाने के लिए Patch फ़ंक्शन के साथ उपयोग करें. रिकॉर्ड बनाने और संपादित करने दोनों के लिए सिंगल स्क्रीन बनाने हेतु इस व्यवहार का उपयोग करें. उदाहरण के लिए, यह सूत्र Contoso नामक ग्राहक के लिए एक रिकॉर्ड बनाता है:

Patch( Customers, Defaults( Customers ), { Name: "Contoso" } )

Note

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

भले ही आप किसी डेटा स्रोत के साथ कार्य नहीं कर रहे हों, फिर भी आप दो या अधिक रिकॉर्ड्स को मर्ज करने के लिए उपयोग कर Patch सकते हैं. उदाहरण के लिए, यह सूत्र दो रिकॉर्ड को एक में मर्ज करता है, जो फ़ोन नंबर और Contoso के लिए स्थान दोनों की पहचान करता है:

Patch( { Name: "Contoso", Phone: "1-212-555-1234" }, { Name: "Contoso", Location: "Midtown" } )

Description

डेटा स्रोत में एक रिकॉर्ड संशोधित करें या बनाएं

डेटा स्रोत के साथ इस फ़ंक्शन का उपयोग करने के लिए, डेटा स्रोत निर्दिष्ट करें और उसके बाद एक मूल रिकॉर्ड निर्दिष्ट करें:

  • किसी रिकॉर्ड को संशोधित करने के लिए, आधार रिकॉर्ड को डेटा स्रोत से आना आवश्यक है. आप किसी गैलरी के आइटम गुण के माध्यम से आधार रिकॉर्ड प्राप्त कर सकते हैं, इसे किसी संदर्भ चर में रख सकते हैं, या इसे किसी अन्य पथ के माध्यम से प्राप्त कर सकते हैं। लेकिन, आपको आधार रिकॉर्ड को डेटा स्रोत पर वापस ट्रेस करने में सक्षम होना चाहिए। यह आवश्यकता महत्वपूर्ण है क्योंकि रिकॉर्ड में अतिरिक्त जानकारी शामिल होती है जो आपको संशोधन के लिए रिकॉर्ड को फिर से खोजने में मदद करती है।
  • रिकॉर्ड बनाने के लिए 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 और Patch का उपयोग करें, जैसा कि त्रुटि हैंडलिंग वर्णन करता है। समस्याओं की पहचान करने और जांचने के लिए, Errors फ़ंक्शन का भी उपयोग कर सकते हैं, जैसा कि डेटा स्रोतों के साथ कार्य करना में वर्णित किया गया है.

Related फ़ंक्शन में संपूर्ण रिकॉर्ड को बदलने के लिए Update फ़ंक्शन और एक रिकॉर्ड बनाने के लिए Collect फ़ंक्शन शामिल हो सकते हैं. शर्ते पर आधारित कई रिकॉर्ड के विशिष्ट गुण संशोधित करने के लिए, UpdateIf फ़ंक्शन का उपयोग करें.

डेटा स्रोत में रिकॉर्ड का सेट संशोधित करें या बनाएं

आप एक ही कॉल से एकाधिक रिकॉर्ड बनाने या संशोधित करने के लिए भी उपयोग कर Patch सकते हैं.

एकल आधार रिकॉर्ड पास करने के बजाय, दूसरे तर्क में आधार रिकॉर्ड की एक तालिका प्रदान करें। एक तालिका में परिवर्तन रिकॉर्ड भी प्रदान करें, आधार रिकॉर्ड के साथ एक-के-एक के लिए एक। प्रत्येक परिवर्तन तालिका में रिकॉर्ड की संख्या, मूल तालिका में रिकॉर्ड की संख्या के समान होनी चाहिए.

जब आप इस तरीके से उपयोग करते Patch हैं, तो वापसी मान भी एक तालिका होती है जिसमें प्रत्येक रिकॉर्ड आधार के लिए एक-एक के लिए एक होता है और रिकॉर्ड बदलता है।

डेटा स्रोत के बाहर रिकॉर्ड मर्ज करें

ऐसे दो या अधिक रिकॉर्ड निर्दिष्ट करें, जिन्हें आप मर्ज करना चाहते हैं. फ़ंक्शन तर्क सूची की शुरुआत से अंत तक रिकॉर्ड को क्रम में संसाधित करता है, बाद के गुण मानों को पहले वाले को ओवरराइड करते हैं।

Patch मर्ज किए गए रिकॉर्ड को लौटाता है और किसी भी डेटा स्रोत में अपने तर्कों या रिकॉर्ड्स को संशोधित नहीं करता है.

Syntax

डेटा स्रोत में एक रिकॉर्ड संशोधित करें या बनाएं

Patch( डेटासोर्स,बेसरिकॉर्ड, चेंजरिकॉर्ड1 [, चेंजरिकॉर्ड 2, ...])

  • डेटा स्रोत – आवश्यक. वह डेटा स्रोत, जिसमें वह रिकॉर्ड शामिल है, जिसे आप संशोधित करना चाहते हैं या वह रिकॉर्ड शामिल होगा, जिसे आप बनाना चाहते हैं.
  • बेसरिकॉर्ड - आवश्यक। संशोधित या बनाए जाने वाला रिकॉर्ड. यदि रिकॉर्ड किसी डेटा स्रोत से आया है, तो फ़ंक्शन रिकॉर्ड को ढूँढता है और संशोधित करता है. यदि डिफ़ॉल्ट के परिणाम का उपयोग किया जाता है , तो फ़ंक्शन एक रिकॉर्ड बनाता है। पैच कथन का DataSource और DataSource का Defaults फ़ंक्शन एक नया रिकॉर्ड बनाने के लिए मेल खाना चाहिए।
  • ChangeRecords – आवश्यक. एक या अधिक रिकॉर्ड, जिनमें BaseRecord में संशोधित किए जाने वाले गुण शामिल हैं. फ़ंक्शन तर्क सूची की शुरुआत से अंत तक रिकॉर्ड को बदलने की प्रक्रिया करता है, बाद में संपत्ति मानों को पहले वाले को ओवरराइड करता है।

डेटा स्रोत में रिकॉर्ड का सेट संशोधित करें या बनाएं

Patch( डेटासोर्स,बेसरिकॉर्ड्सटेबल, चेंजरिकॉर्डटेबल1 [, चेंजरिकॉर्डटेबल2, ... ] )

  • डेटा स्रोत – आवश्यक. वह डेटा स्रोत, जिसमें वे रिकॉर्ड शामिल हैं, जिसे आप संशोधित करना चाहते हैं या वे रिकॉर्ड शामिल होंगे, जिन्हें आप बनाना चाहते हैं.
  • BaseRecordTable – आवश्यक. संशोधित या बनाए जाने वाले रिकॉर्ड की तालिका. यदि रिकॉर्ड किसी डेटा स्रोत से आया है, तो फ़ंक्शन रिकॉर्ड को ढूँढता है और संशोधित करता है. यदि डिफ़ॉल्ट के परिणाम का उपयोग किया जाता है , तो फ़ंक्शन एक रिकॉर्ड बनाता है। पैच कथन का DataSource और DataSource का Defaults फ़ंक्शन एक नया रिकॉर्ड बनाने के लिए मेल खाना चाहिए।
  • ChangeRecordTables – आवश्यक. रिकॉर्ड की एक या अधिक तालिकाएँ, जिनमें BaseRecordTable के प्रत्येक रिकॉर्ड के लिए संशोधित किए जाने वाले गुण हैं. फ़ंक्शन तर्क सूची की शुरुआत से अंत तक रिकॉर्ड को बदलने की प्रक्रिया करता है, बाद में संपत्ति मानों को पहले वाले को ओवरराइड करता है।

Merge records

Patch( रिकॉर्ड 1,रिकॉर्ड 2 [, ...] )

  • रिकॉर्ड्स - आवश्यक. ऐसे कम से कम दो रिकॉर्ड, जिन्हें आप मर्ज करना चाहते हैं. फ़ंक्शन तर्क सूची की शुरुआत से अंत तक रिकॉर्ड को संसाधित करता है, बाद में संपत्ति मान पहले वाले को ओवरराइड करते हैं।

Examples

रिकॉर्ड संशोधित करें या बनाएं (डेटा स्रोत में)

इन उदाहरणों में, आप संशोधित करते हैं या IceCream नामक डेटा स्रोत में कोई रिकॉर्ड बनाते हैं. डेटा स्रोत में इस तालिका में डेटा होता है और यह स्वचालित रूप से IDस्तंभ में मान जनरेट करता है:

आइसक्रीम डेटा स्रोत उदाहरण तालिका का स्क्रीनशॉट स्वाद और मात्रा दिखा रहा है।

इस डेटा स्रोत का इन-मेमोरी संस्करण बनाने के लिए ताकि आप इन उदाहरणों को आज़मा सकें, इस सूत्र का मूल्यांकन करें:

ClearCollect( IceCream,
    { ID: 1, Flavor: "Chocolate", Quantity: 100 },
    { ID: 2, Flavor: "Vanilla", Quantity: 200 }
)
Formula Description Result
Patch(आइसक्रीम,
लुकअप (आइसक्रीम, स्वाद = "चॉकलेट"), {मात्रा: 400 })
IceCream डेटा स्रोत में रिकॉर्ड संशोधित करता है:
  • रिकॉर्ड का संशोधित किया जाने वाले ID स्तंभ में 1 मान है. (Chocolate रिकॉर्ड में वह ID है.)
  • Quantity स्तंभ में मान 400 में परिवर्तित होता है.
{आईडी: 1, स्वाद: "चॉकलेट", मात्रा: 400 }

IceCream डेटा स्रोत में चॉकलेट प्रविष्टि को संशोधित किया गया है।
Patch(आइसक्रीम, डिफॉल्ट (आइसक्रीम), {स्वाद: "स्ट्रॉबेरी" } ) IceCream डेटा स्रोत में एक रिकॉर्ड बनाता है:
  • ID स्तंभ में मान 3 है, जिसे डेटा स्रोत स्वचालित रूप से जनरेट करता है.
  • Quantity स्तंभ में 0 है, जो IceCream डेटा स्रोत में उस स्तंभ के लिए डिफ़ॉल्ट मान है, जिसे Defaults फ़ंक्शन निर्दिष्ट करता है.
  • Flavor स्तंभ में Strawberry का मान शामिल है.
{आईडी: 3, स्वाद: "स्ट्रॉबेरी", मात्रा: 0}

IceCream डेटा स्रोत में स्ट्रॉबेरी प्रविष्टि बनाई गई है।

पिछले सूत्रों का मूल्यांकन करने के बाद, डेटा स्रोत इन मानों के साथ समाप्त होता है:

सूत्रों का Patch मूल्यांकन करने के बाद आइसक्रीम डेटा स्रोत का स्क्रीनशॉट।

रिकॉर्ड मर्ज करें (डेटा स्रोत के बाहर)

Formula Description Result
Patch( { नाम: "जेम्स", स्कोर: 90 }, { नाम: "जिम", उत्तीर्ण: सत्य } ) डेटा स्रोत के बाहर दो रिकॉर्ड मर्ज करें:
  • Name स्तंभ में प्रत्येक रिकॉर्ड के मान मैच नहीं करते हैं. परिणाम में, रिकॉर्ड में मान (Jim) शामिल है, जो उस रिकॉर्ड में मान (James) के बजाय तर्क सूची के अंत के करीब है, जो प्रारंभ के करीब है.
  • पहले रिकॉर्ड में एक स्तंभ (Score) शामिल है, जो दूसरे रिकॉर्ड में मौजूद नहीं है. परिणाम में वह स्तंभ उसके मान (90) के साथ शामिल है.
  • दूसरे रिकॉर्ड में एक स्तंभ (Passed) शामिल है, जो पहले रिकॉर्ड में मौजूद नहीं है. परिणाम में वह स्तंभ उसके मान (सही) के साथ शामिल है.
{ नाम: "जिम", स्कोर: 90, उत्तीर्ण: सत्य}

रिकॉर्ड्स का एक सेट संशोधित करना या बनाएँ (डेटा स्रोत में)

जब आप एकल रिकॉर्ड के बजाय तालिकाओं के साथ उपयोग करते Patch हैं, तो आप एक ही कॉल में एकाधिक रिकॉर्ड बना या संशोधित कर सकते हैं. वापसी मूल्य रिकॉर्ड की एक तालिका है जो इनपुट तालिकाओं के साथ एक-के-एक से मेल खाती है।

यह उदाहरण एक साथ आइसक्रीम डेटा स्रोत में कई स्वादों के लिए मात्रा को अपडेट करता है:

Patch(
    IceCream,
    Table(
        { ID: 1, Flavor: "Chocolate", Quantity: 150 },
        { ID: 2, Flavor: "Vanilla", Quantity: 200 }
    ),
    Table(
        { Quantity: 300 },
        { Quantity: 400 }
    )
)

परिणाम अद्यतन रिकॉर्ड के साथ एक तालिका है: { ID: 1, Flavor: "Chocolate", Quantity: 300 } और { ID: 2, Flavor: "Vanilla", Quantity: 400 }.

यह उदाहरण डिफ़ॉल्ट का उपयोग करके कई नए रिकॉर्ड बनाता है:

Patch(
    IceCream,
    Table( Defaults( IceCream ), Defaults( IceCream ) ),
    Table(
        { Flavor: "Mint", Quantity: 60 },
        { Flavor: "Peach", Quantity: 80 }
    )
)

Note

जब आप तालिकाओं के साथ उपयोग करते Patch हैं, तो प्रत्येक परिवर्तन तालिका में रिकॉर्ड्स की संख्या आधार तालिका में रिकॉर्ड की संख्या से मेल खाना चाहिए. अन्यथा, कोई त्रुटि होती है।

जब आप एक से अधिक रिकॉर्ड संशोधित करते हैं, तो त्रुटियों का पता लगाने के लिए, IfError का उपयोग करें। IfError पसंदीदा तंत्र है और Power Fx होस्ट पर कार्य करता है:

IfError(
    Patch(
        IceCream,
        baseRecords,
        changeRecords
    ),
    Notify( "Some records failed to update: " & FirstError.Message, NotificationType.Error )
)

Patch Dataverse कॉलम प्रकारों के साथ

निम्न उदाहरण विशेष रूप से Microsoft Dataverse डेटा स्रोतों पर लागू होते हैं। रिकॉर्ड आकृतियाँ डेटा स्रोत के अनुसार भिन्न होती हैं (उदाहरण के लिए, SharePoint और SQL Server के अलग-अलग स्वरूप होते हैं).

पसंद कॉलम: पसंद स्तंभ सेट करने के लिए, सीधे enum मान का उपयोग करें. यह उदाहरण किसी खाता तालिका पर स्थिति विकल्प स्तंभ सेट करता है:

Patch(
    Accounts,
    LookUp( Accounts, 'Account Name' = "Contoso" ),
    { 'Status': 'Status (Accounts)'.Active }
)

लुकअप कॉलम: लुकअप स्तंभ सेट करने के लिए, संबंधित तालिका की प्राथमिक कुंजी के साथ एक रिकॉर्ड प्रदान करें. यह उदाहरण किसी खाता रिकॉर्ड पर प्राथमिक संपर्क लुकअप सेट करता है:

Patch(
    Accounts,
    LookUp( Accounts, 'Account Name' = "Contoso" ),
    { 'Primary Contact': LookUp( Contacts, 'Full Name' = "John Smith" ) }
)

Note

ये कॉलम-प्रकार के उदाहरण Dataverse-विशिष्ट हैं। अन्य डेटा स्रोतों, जैसे SharePoint या SQL Server, को समान स्तंभ प्रकारों के लिए भिन्न रिकॉर्ड आकृतियों की आवश्यकता हो सकती है. सही प्रारूप के लिए अपने विशिष्ट डेटा स्रोत के लिए प्रलेखन देखें।

सूत्रों में प्रत्यायोजन जो उपयोग करते हैं Patch

Patch फ़ंक्शन स्वयं डेलिगेशन के अधीन नहीं है क्योंकि यह डेटा स्रोत को क्वेरी करने के बजाय लिखता है। हालाँकि, डेलिगेशन चेतावनियाँ उन सूत्रों में दिखाई दे सकती हैं जिनका उपयोग तब Patch किया जाता है जब सूत्र के रिकॉर्ड-चयन भाग (जैसे फ़िल्टर, लुकअप या ForAll) में कोई क्वेरी शामिल होती है जो डेटा स्रोत डेलिगेशन सीमाओं से अधिक होती है.

जब आप किसी सूत्र में कोई डेलिगेशन चेतावनी देखते हैं जिसमें शामिल है Patch, तो जाँचें कि क्या चेतावनी स्वयं के Patch बजाय डेटा पुनर्प्राप्ति फ़ंक्शंस पर लागू होती है. प्रत्यायोजन के बारे में अधिक जानकारी के लिए, कैनवास अनुप्रयोग में डेलिगेशन को समझना देखें.

फ़ंक्शन के साथ Patch सामान्य त्रुटियां

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

  • "फ़ंक्शन का उपयोग करते Patch समय नेटवर्क त्रुटि": यह त्रुटि आमतौर पर इंगित करती है कि ऐप डेटा स्रोत तक नहीं पहुंच सकता है। सामान्य कारणों में इंटरनेट कनेक्शन का खोना, डेटा स्रोत का अस्थायी रूप से अनुपलब्ध होना, या वर्तमान उपयोगकर्ता के लिए अपर्याप्त अनुमतियाँ शामिल हैं। उपयोगकर्ताओं को एक सार्थक संदेश प्रदान करने के लिए कॉल को PatchIfError में लपेटें।

  • "सर्वर पर होने वाले बदलावों के साथ विरोध मौजूद हैं": यह गड़बड़ी तब होती है, जब कोई अन्य उपयोगकर्ता या प्रोसेस आपके ऐप्लिकेशन द्वारा रिकॉर्ड को पढ़ने और बदलाव लिखने के समय के बीच उसी रिकॉर्ड को संशोधित करता है. ताज़ा करें फ़ंक्शन को कॉल करके डेटा स्रोत को ताज़ा करें और कार्रवाई का पुन: प्रयास करें।

  • अनुमति त्रुटियाँ: यदि उपयोगकर्ता के पास डेटा स्रोत में रिकॉर्ड बनाने या संशोधित करने की अनुमति नहीं है, Patch तो कॉल विफल हो जाती है. अनुमति-संबंधी त्रुटियों को पकड़ने और उपयोगकर्ता का मार्गदर्शन करने के लिए IfError का उपयोग करें।

सामान्य त्रुटि-प्रबंधन पैटर्न के लिए, त्रुटि प्रबंधन देखें.

के रूप में या ThisRecord का इस्तेमाल

अस्पष्ट मूल्यांकन संदर्भ से बचने के लिए अपने सूत्र में इस रूप या ThisRecord कीवर्ड का उपयोग करें.

निम्नलिखित उदाहरण में, कथन में पहले If पर Lookup विचार करें। (OrderID = A[@OrderID])दायरे में संग्रह के साथ दायरे में तुलना OrderIdLookup करने की उम्मीद है।OrderIdAForAll इस स्थिति में, आप संभवतः स्थानीय पैरामीटर के रूप में हल करना चाहते हैं A[@OrderId] । लेकिन यह अस्पष्ट है।

Power Apps वर्तमान में बाईं ओर OrderId और दाईं ओर A[@OrderId] दोनों को Lookup दायरे में एक क्षेत्र के रूप में व्याख्या करता है। इसलिए, Lookup हमेशा पहली पंक्ति [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 कीवर्ड का उपयोग करें। जैसा कि पिछले परिदृश्य के लिए अनुशंसित है।

जब आपका सूत्र , और Filterएक Lookup ही डेटा स्रोत या तालिका पर एकाधिक क्षेत्रों ForAllका उपयोग करता है, तो क्षेत्र पैरामीटर कहीं और एक ही फ़ील्ड से टकरा सकते हैं. इसलिए, फ़ील्ड नाम को हल करने और अस्पष्टता से बचने के लिए ऑपरेटर या 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 के उपयोग के बारे में अधिक जानने के लिए, ऑपरेटर आलेख देखें।