4, 5 or 7 syntaxes for the Patch function in Power Apps4, 5 or 7 syntaxes for the Patch function in Power Apps

Did you know that there are 5 different syntaxes for the patch function? Or are there 7, or maybe just 4. In this post all about the various syntaxes for the Patch function.

The 5 syntaxes for the Patch function

The Patch function is most of the times used to create or update a record in a data source. However there are 5 ways of using the Patch function according to the intellisense in Power Apps studio

Patch(source, record)
Patch(source, record, update)
Patch(source, rows, updates)
Patch(source, rows)
Patch(record, update)

For two of these options there are even, slight variations as the update parameters can be repeated.

Patch(source, record, update, update, update, …)

Then when we look at the Patch documentation we seem to be getting not exactly the same details as in the intellisense. So I thought, it is time for a post.

Syntax 1 – Patch(source, record)

This syntax for Patch takes a single record with primary keys and updates values and updates the corresponding row in the specified data source. It returns the updated row.

record third syntax patch
record third syntax patch

This means that if we have an app with a button that ran the following code, we could create a record in the Accounts table like this.

Patch(Accounts,{'Account Name': "Test Account"})

But if we include the unique key in the update we will have an Upsert function available to us in Power Apps. So if we ran the following line of code:

Set(varMyAccount, 
    Patch(Accounts,
          {accountid: varAccountID, 'Account Name': "Test Account 1"}
   )
)

followed by the following line of code:

Set(varMyAccount, 
    Patch(Accounts,
          {accountid: varAccountID, 'Account Name': "Test Account 2"}
    )
)

Then a single record will be created. The first time we run the patch a new record will be created as there isn’t a record with an accountid matching the GUID hold within the varAccountID variable. In other words this does an Upsert of the the data.

Syntax 2 – Patch(source, record, update)

This is probably the most common way of using the Patch command to update or create an existing record in a data source.

This syntax applies the updates to a specified row and changes the row in the specified data source. It also returns the updated row.

patch record syntax
patch record syntax

To create a new record the following syntax is available

Set(varMyAccount, 
  Patch(Accounts,
        Defaults(Accounts),
       {'Account Name': "Test Account 1"}
  )
)

The defaults function in the above will give us a new records in the specified data source

And for updates of existing records the following syntax can be used.

Set(varMyAccount, 
  Patch(Accounts,
        Lookup(Accounts, 'Account Name' = "Test Account 1),
       {'Account Name': "Test Account 2"}
  )
)

Syntax 3 – Patch(source, rows)

This 3rd syntax is an interesting one. So often people use ForAll loops to do updates. however this 3rd syntax handles many updates on selected records in one go.

Patch Source Syntax
Patch Source Syntax

So with this syntax the patch function takes a table of rows with pirmary keys and updates fields and applies those updates to the data sources. So imagine a classroom of students that can be updates in one go wihtout having to loop through the students that you want to update.

In the example below we have a collection of records (in the varUpdateThese variable). Then we make updates to some of the records.

And finally we patch the data source with the collection updates made.

Button running Patch in Power Apps
Button running Patch in Power Apps

Syntax 4 – Patch(source, rows, updates)

This syntax is offered by the Intellisense however it doesn’t seem to be available.

Syntax 5 – Patch(record, update)

This last Syntax is to update just a single record.

Patch record update syntax
Patch record update syntax

Notice that the data source where we may have read the data from initially is not being updated in this case.

So we can use this to update a single record.

Patch record update in Power Apps
Patch record update in Power Apps

So what is the purpose of this Syntax? Well if we think about multiple records updating, what we really are going is merging records. And the following syntax is still perfectly valid.

Patch(record, update1, update 2, update 3, ...)

So if we have the list of updates here and the updates override the previous updates, then a merge of data can be accomplished.

Thoughts on the syntaxes for the Patch Function

So the patch function can be used for simple updates or the creation of records in data sources, but the Patch function is also great to manipulate the data in alternative aways. Like the Merge that we saw in Syntax 5. Using the Patch function correctly can make a massive difference between an app being sluggish and hated or lightning speed fast and liked by users.

Maybe it is time to review some of your apps and see if they can work any faster.

Avatar for Pieter Veenstra

By Pieter Veenstra

Business Applications Microsoft MVP working as the Head of Power Platform at Vantage 365. You can contact me using contact@sharepains.com

3 thoughts on “4, 5 or 7 syntaxes for the Patch function in Power Apps”
  1. Thank you for another detailed post. How do you please should use the Patch function if we are adding anew record using bind controls (No patch) but want to update a field of the newly/just created record using patch function?

  2. Syntax 4 seems to have been deprecated by Syntax 3. Also, would be nice to understand if packing so much into one action can be detrimental. For example, remove and removeif can have disastrous consequences if the syntax is wrong….such as removing all rows. Hard to recover from this if the data source is SharePoint.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Discover more from SharePains by Microsoft MVP Pieter Veenstra

Subscribe now to keep reading and get access to the full archive.

Continue reading