cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Community Champion
Community Champion

Patch a Collection

The release notes for 2.0.531 indicates an improvement to the Patch function that I'm excited about: 

 

 

7. Update multiple records at once by using the Patch function.

Create or update more than one record at a time by specifying a table of base records and 
a table of change records as arguments for the Patch function.

 

I think this is what I've been waiting for, but I'm not sure how to use it. 

 

Can I save a Collection with identical fields back to the datasource? For instance, can I Patch the rows in Collection1 into DataSource1 if they have identical columns? I've been trying:

 

Patch(DataSource1,Collection1)

 

but that does not result in any new rows written. What am I doing wrong?

 

 

EDIT: could it be that the default fields (Title, CreatedOnDateTime, etc.) are blank in the Collection, so it cannot be Patched with those blank?

Microsoft Employee
@8bitclassroom
39 REPLIES 39
Community Champion
Community Champion

You are welcome.

The way I understand it, it is cleaner to use AddColumns instead of ForAll when you just need to calculate a value.  I reserve ForAll for when there is a real need to use actions.

Community Champion
Community Champion

You are right, @Mike8, only the second part.

Here is the first part, with a bit of a cheat...

ClearCollect(Collection1,{Letter:"A",Number:1},{Letter:"B",Number:2},{Letter:"C",Number:3});
ClearCollect(Collection2,{SecondNumber:4},{SecondNumber:5},{SecondNumber:6});
ForAll(Collection2, Patch(Collection1, Last(FirstN(Collection1, SecondNumber-3)), {Number: SecondNumber}))

If you don't want to cheat, just add an index to both collections.

Perfect. Thank you again @Meneghino.

Especially your first answer about the second part of my question really helped me.
I was using this:
ClearCollect(Collection3, AddColumns(Collection1, "New_column", Collection2.SecondNumber))
and I had the Collection2.SecondColumn in every record in a nested structure.
Problem solved. 🙂

Helper III
Helper III

 

This is the property I have setup to add data to sql server..getting error ; the first argument of patch should be a collection

 

Patch('[dbo].[Sample]',Defaults('[dbo].[Sample]'),
{
Organisation : DataCardValue15.Text,
Line_of_Business :DataCardValue16.Text,
Industry :DataCardValue18.Text ,
Director :DataCardValue19.Text ,
Product :DataCardValue20.Text ,
Engineering_Manager :DataCardValue21.Text,
Metrics_Reporter : DataCardValue22.Text })

Hi @kullurumanoj

I believe the error is related to your table structure.  The SQL table should have a primary key defined.

For example, see here:

https://powerusers.microsoft.com/t5/General-Discussion/Patch-problems-with-on-premises-SQL-gateway/m...

 

Heyy bro.. thanks it did work and the problem is when I try to edit the previous record ,a new record with the edited field is getting created instead of updating old record.

What happens depends on the second parameter of the Patch.

Use defaults to create a new record, or a simple record with primary key values to edit an existing record.

Like this:

Patch(DataSource, {ID: 123}, {TextColumn: "Foo"})

PS You can get better performance if you avoid the use of Defaults():

https://baizini-it.com/blog/index.php/2018/01/11/powerapps-replace-the-defaults-function-to-improve-...

hey my primary key is UID,but whenever I try to edit other fileds it says The item has already been created on the server, but able to edit UID and also it gets created as new record with edited UID,rest with same properties..I am a beginner need some help with this

 

Here is my code ;

 

Patch('[dbo].[Sample]',{UID:Blank()},
{UID : DataCardValue21.Text,
Organisation : DataCardValue22.Text,
Line_of_Business : DataCardValue23.Text,
Industry : DataCardValue24.Text ,
Director : DataCardValue25.Text ,
Product : DataCardValue26.Text ,
Engineering_Manager : DataCardValue27.Text,
Metrics_Reporter : DataCardValue28.Text });
Navigate(BrowseScreen1, ScreenTransition.None);Refresh('[dbo].[Sample]')

Hi @kullurumanoj

If you are still having issues please get in touch via private message and I will try to see what is going on.

Thanks.

Was able to figure that out ..Thanks for the help

Helpful resources

Announcements
New Badges

New Solution Badges!

Check out our new profile badges recognizing authored solutions!

New Power Super Users

Congratulations!

We are excited to announce the Power Apps Super Users!

Power Apps Community Call

Power Apps Community Call: February

Did you miss the call? Check out the Power Apps Community Call here.

Top Solution Authors
Top Kudoed Authors
Users online (103,405)