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

Patching selected records and fields to SharePoint from a collection

I am trying to build an update button with a patch command to take particular fields from particular records in a collection and patch them out to a SharePoint list.

 

This is part of my ordering app, it presents the user with a gallery of items they can order.  The gallery is itemized from a collection.

 

OnVisible = ClearCollect(ColTempOrder, AddColumns(OAItemList,"OrderQuantity", 0))

 

This code is on the screen and itemizes the list.  Then the user will increase the quantity for the items they want ordered, then press the submit button.

 

Submit should then patch out to a first SharePoint list creating a general order record and bring back the Order ID; and then patch out a second time to a different list with each item ordered and the quantity requested, this time only for records with a quantity greater than 0.

 

Set(NewOrderID, Patch(OAOrdersList, Defaults(OAOrdersList), {OrderSubmittedBy: User().FullName}));
ForAll(ColTempOrder,                    
    If(ColTempOrder.OrderQuantity > 0,      //Test to make sure the user is ordering one or more of this item
        Patch(OAOrderItemisedList, Defaults(OAOrderItemisedList), 
            {ItemID: ColTempOrder.ItemID,
            OrderQuantity: ColTempOrder.OrderQuantity, 
            OrderedBy:User().FullName,      //A text verson of the user name placing the order, not a 365 user account link.
            OrderID:NewOrderID.OrderID}))); //The Order ID saved from the return of the patch command above.
Back()

 

 My first patch command (the one with Set() ) above works fine, but the second one is giving me a couple of errors.  The 'If()' doesn't like OrderQuantity > 0;  and the Patch command itself is giving me errors about invalid arguments.  I am still not good enough with the syntax to figure out what I am doing wrong.

1 ACCEPTED SOLUTION

Accepted Solutions

OK, managed to fix that part myself as well!

 

The "Sum" statement wasn't working for me, so I went back to my original idea of =  "If(ColTempOrder.OrderQuantity > 0,".

 

And I worked more with it, it turns out once again the issue was mentioning the collection I wanted the variable pulled from, "ColTempOrder".  Taking that out and just using " If( OrderQuantity > 0," worked.

 

I am still too new at this to really understand the syntax I am employing.  I just google around until I find an example posted somewhere and then substitute my variables and list names and try to make it work for me.

 

In this case I have to assume that because this code starts with "ForAll( ColTempOrder,"; That this collection is now kind of a home point and it assumes everything is coming from here unless you specify something outside, and referencing the collection from within the collection breaks it.

 

That seems to be the case.

 

Closing this thread, thank you everyone for your continued assistance.

View solution in original post

6 REPLIES 6
WarrenBelz
Most Valuable Professional
Most Valuable Professional

Hi @David283 ,

You are comparing a table value (which does not have a single Numeric value)

Set(
   NewOrderID, 
   Patch(
      OAOrdersList, 
      Defaults(OAOrdersList), 
      {OrderSubmittedBy: User().FullName}
   )
);
ForAll(
   ColTempOrder,                    
   If(
      Sum(
         ColTempOrder,
         OrderQuantity
      )> 0,
      Patch(
         OAOrderItemisedList, 
         Defaults(OAOrderItemisedList), 
         {
            ItemID: ColTempOrder.ItemID,
            OrderQuantity: ColTempOrder.OrderQuantity, 
            OrderedBy:User().FullName,      
            OrderID:NewOrderID.OrderID
         }
      )
   )
);
Back()

 

Please click Accept as solution if my post helped you solve your issue. This will help others find it more readily. It also closes the item. If the content was useful in other ways, please consider giving it Thumbs Up.

 

That fixed the 'IF' part of my code.  But there is still an error in the patch command, now it says ' The type of this argument 'ItemID' does not match the expected type 'Number'. Found type 'Table. ' 

ItemID is a renamed standard SharePoint field 'ID'.  As far as I know its numeric, it just counts up by one with each new record.  Is it actually a record field?  If so 'OrderID' will have the same issues later in the patch command.

 

 

OK, I am very new to Power Apps, so forgive me for the basic questions.

 

As I showed above, the OrderQuantity field was created in the app using AddColumn =  AddColumns(OAItemList,"OrderQuantity", 0)

 

So from what your saying, it looks like the default for a field created this way is record.  Is there a way to change that to text or number?

 

And I take it the 'Sum' function somehow converts it to numeric temporarily?  Will I need to do something similar when, later in the command, I patch that value out to the SharePoint list?

 

OK, managed to fix part of this myself, 

 

ForAll(
   ColTempOrder,                    
   If(
      Sum(
         ColTempOrder,
         OrderQuantity
      )> 0,
      Patch(
         OAOrderItemisedList, 
         Defaults(OAOrderItemisedList), 
         {
            ItemID: ItemID,
            OrderQuantity: OrderQuantity, 
            OrderedBy:User().FullName,      
            OrderID:NewOrderID.OrderID
         }
      )
   )
);
Back()

 

The patch's for both ItemID and OrderQuantity had references to the collection itself, which the patch command doesn't like for some reason, so taking that out and just doing "ItemID: ItemID," and "OrderQuantity: OrderQuantity" fixed the errors.

 

And the patch command works now, it writes the first patch to the Orders list and gets back the ID, then patches everything to the second list including the ID from the first list, brilliant!

 

But unfortunately it writes all records to the second list, including those with quantity 0...  So the logic of the "IF" statement isn't working.

 

Could someone assist?

OK, managed to fix that part myself as well!

 

The "Sum" statement wasn't working for me, so I went back to my original idea of =  "If(ColTempOrder.OrderQuantity > 0,".

 

And I worked more with it, it turns out once again the issue was mentioning the collection I wanted the variable pulled from, "ColTempOrder".  Taking that out and just using " If( OrderQuantity > 0," worked.

 

I am still too new at this to really understand the syntax I am employing.  I just google around until I find an example posted somewhere and then substitute my variables and list names and try to make it work for me.

 

In this case I have to assume that because this code starts with "ForAll( ColTempOrder,"; That this collection is now kind of a home point and it assumes everything is coming from here unless you specify something outside, and referencing the collection from within the collection breaks it.

 

That seems to be the case.

 

Closing this thread, thank you everyone for your continued assistance.

Hi @David283 ,

I can only respond to the information you provide - I am also (I assume) in a different time zone to you (UTC + 10).

A bit of advice - when you solve something, take the time to understand it and it will save you a lot of grief when you have to re-produce something similar. It also does not make a lot of sense to me (from your description) how 

If(colTempOrder.OrderQuantity)>0

would now be valid as it is a Table and was actually the error in the question you posted (and I responded with the solution).

 

Please click Accept as solution if my post helped you solve your issue. This will help others find it more readily. It also closes the item. If the content was useful in other ways, please consider giving it Thumbs Up.

 

Hello Warren, thank you so much for your assistance last Friday in getting this working.

 

I know there are many ways to do the same thing in coding, and your idea of using 'Sum' was excellent and got me thinking about this in different ways.

In the end, the solution I went with was " If( OrderQuantity > 0,".  It made the most since to me and worked well in my code.

 

I am sorry if I didn't explain well what was going on in my application and didn't give you good information to work from.  I will try to give clearer information in the future.

 

And your 100% correct, Its very important to take time to understand how a solution to a problem works, so that I can learn how the underlying system works, and can avoid the same problem in the future.  I feel I am getting a little better at this each day, slowly improving.  This little ordering app project has been very beneficial to me as a learning project.  And I am very grateful to the community on this forum for their support.

 

Thank you.

Helpful resources

Announcements

Community will be READ ONLY July 16th, 5p PDT -July 22nd

Dear Community Members,   We'd like to let you know of an upcoming change to the community platform: starting July 16th, the platform will transition to a READ ONLY mode until July 22nd.   During this period, members will not be able to Kudo, Comment, or Reply to any posts.   On July 22nd, please be on the lookout for a message sent to the email address registered on your community profile. This email is crucial as it will contain your unique code and link to register for the new platform encompassing all of the communities.   What to Expect in the New Community: A more unified experience where all products, including Power Apps, Power Automate, Copilot Studio, and Power Pages, will be accessible from one community.Community Blogs that you can syndicate and link to for automatic updates. We appreciate your understanding and cooperation during this transition. Stay tuned for the exciting new features and a seamless community experience ahead!

Summer of Solutions | Week 4 Results | Winners will be posted on July 24th

We are excited to announce the Summer of Solutions Challenge!   This challenge is kicking off on Monday, June 17th and will run for (4) weeks.  The challenge is open to all Power Platform (Power Apps, Power Automate, Copilot Studio & Power Pages) community members. We invite you to participate in a quest to provide solutions in the Forums to as many questions as you can. Answers can be provided in all the communities.    Entry Period: This Challenge will consist of four weekly Entry Periods as follows (each an “Entry Period”)   - 12:00 a.m. PT on June 17, 2024 – 11:59 p.m. PT on June 23, 2024 - 12:00 a.m. PT on June 24, 2024 – 11:59 p.m. PT on June 30, 2024 - 12:00 a.m. PT on July 1, 2024 – 11:59 p.m. PT on July 7, 2024 - 12:00 a.m. PT on July 8, 2024 – 11:59 p.m. PT on July 14, 2024   Entries will be eligible for the Entry Period in which they are received and will not carryover to subsequent weekly entry periods.  You must enter into each weekly Entry Period separately.   How to Enter: We invite you to participate in a quest to provide "Accepted Solutions" to as many questions as you can. Answers can be provided in all the communities. Users must provide a solution which can be an “Accepted Solution” in the Forums in all of the communities and there are no limits to the number of “Accepted Solutions” that a member can provide for entries in this challenge, but each entry must be substantially unique and different.    Winner Selection and Prizes: At the end of each week, we will list the top ten (10) Community users which will consist of: 5 Community Members & 5 Super Users and they will advance to the final drawing. We will post each week in the News & Announcements the top 10 Solution providers.  At the end of the challenge, we will add all of the top 10 weekly names and enter them into a random drawing.  Then we will randomly select ten (10) winners (5 Community Members & 5 Super Users) from among all eligible entrants received across all weekly Entry Periods to receive the prize listed below. If a winner declines, we will draw again at random for the next winner.  A user will only be able to win once overall. If they are drawn multiple times, another user will be drawn at random.  Individuals will be contacted before the announcement with the opportunity to claim or deny the prize.  Once all of the winners have been notified, we will post in the News & Announcements of each community with the list of winners.   Each winner will receive one (1) Pass to the Power Platform Conference in Las Vegas, Sep. 18-20, 2024 ($1800 value). NOTE: Prize is for conference attendance only and any other costs such as airfare, lodging, transportation, and food are the sole responsibility of the winner. Tickets are not transferable to any other party or to next year’s event.   ** PLEASE SEE THE ATTACHED RULES for this CHALLENGE**   Week 1 Results: Congratulations to the Week 1 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersNumber of SolutionsSuper UsersNumber of Solutions @anandm08  23 @WarrenBelz  31 @DBO_DV  10 @Amik  19 AmínAA 6 @mmbr1606  12 @rzuber  4 @happyume  7 @Giraldoj  3@ANB 6 (tie)   @SpongYe  6 (tie)     Week 2 Results: Congratulations to the Week 2 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge. Community MembersSolutionsSuper UsersSolutions @anandm08  10@WarrenBelz 25 @DBO_DV  6@mmbr1606 14 @AmínAA 4 @Amik  12 @royg  3 @ANB  10 @AllanDeCastro  2 @SunilPashikanti  5 @Michaelfp  2 @FLMike  5 @eduardo_izzo  2   Meekou 2   @rzuber  2   @Velegandla  2     @PowerPlatform-P  2   @Micaiah  2     Week 3 Results: Congratulations to the Week 3 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Week 3:Community MembersSolutionsSuper UsersSolutionsPower Apps anandm0861WarrenBelz86DBO_DV25Amik66Michaelfp13mmbr160647Giraldoj13FLMike31AmínAA13SpongYe27     Week 4 Results: Congratulations to the Week 4 qualifiers, you are being entered in the random drawing that will take place at the end of the challenge.   Week 4:Community MembersSolutionsSuper UsersSolutionsPower Apps DBO-DV21WarranBelz26Giraldoj7mmbr160618Muzammmil_0695067Amik14samfawzi_acml6FLMike12tzuber6ANB8   SunilPashikanti8

Check Out | 2024 Release Wave 2 Plans for Microsoft Dynamics 365 and Microsoft Power Platform

On July 16, 2024, we published the 2024 release wave 2 plans for Microsoft Dynamics 365 and Microsoft Power Platform. These plans are a compilation of the new capabilities planned to be released between October 2024 to March 2025. This release introduces a wealth of new features designed to enhance customer understanding and improve overall user experience, showcasing our dedication to driving digital transformation for our customers and partners.    The upcoming wave is centered around utilizing advanced AI and Microsoft Copilot technologies to enhance user productivity and streamline operations across diverse business applications. These enhancements include intelligent automation, AI-powered insights, and immersive user experiences that are designed to break down barriers between data, insights, and individuals. Watch a summary of the release highlights.    Discover the latest features that empower organizations to operate more efficiently and adaptively. From AI-driven sales insights and customer service enhancements to predictive analytics in supply chain management and autonomous financial processes, the new capabilities enable businesses to proactively address challenges and capitalize on opportunities.    

Updates to Transitions in the Power Platform Communities

We're embarking on a journey to enhance your experience by transitioning to a new community platform. Our team has been diligently working to create a fresh community site, leveraging the very Dynamics 365 and Power Platform tools our community advocates for.  We started this journey with transitioning Copilot Studio forums and blogs in June. The move marks the beginning of a new chapter, and we're eager for you to be a part of it. The rest of the Power Platform product sites will be moving over this summer.   Stay tuned for more updates as we get closer to the launch. We can't wait to welcome you to our new community space, designed with you in mind. Let's connect, learn, and grow together.   Here's to new beginnings and endless possibilities!   If you have any questions, observations or concerns throughout this process please go to https://aka.ms/PPCommSupport.   To stay up to date on the latest details of this migration and other important Community updates subscribe to our News and Announcements forums: Copilot Studio, Power Apps, Power Automate, Power Pages