cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Harshavardhan22
Frequent Visitor

Update a SharePoint Choice column from power apps based on Approve/Reject Button in OnSuccess property of the Form

Hello Everyone!!!

 

I am stuck with the below question to bring in the feature, which is to update a SharePoint choice column from power apps based on the Approve/Reject button clicked by the user to submit a form. Well let me explain you the Scenario....

 

I have created a power app from a share point list with multiple columns. Now let say List name is 'Expenses' and columns are Title, Place, Amount and Status. Here Status column is choice column that has L1Approved, L1Rejected, L2Approved & L2Rejected as choices. Now when the L1 Manager opens the app, it will have 2 buttons Approve and Reject. When the Manager click the Approve/Reject button, It should submit the form and OnSuccess it should update the SharePoint column named Status as L1Approved/L1Rejected based on the button selected. 

Request to please help me in solving this. I am able to do this by writing this function: Patch('Expenses', LookUp('Expenses', ID = varRecord.ID),{'Status': {Value: "L1Approved"/"L1Rejected"}}) individually on both Approve/Reject Button. But the problem is, with OnSelect property on the each button is changing the status even if the Form is not submitted successfully. So I have thought of using this OnSuccess property of the form, which might solve my issue of updating the column only when the form is successfully submitted.


Need your help in solving this issue. Thanks very everyone in advance!!!

 

Tagging: @timl@WarrenBelz@Drrickryp@Pstork1@BCBuizer@RandyHayes 

1 ACCEPTED SOLUTION

Accepted Solutions
BCBuizer
Super User
Super User

Hi @Harshavardhan22 ,

 

You can use a variable for that. Use the below code in the OnSucces property of the form:

 

Patch('Expenses', LookUp('Expenses', ID = varRecord.ID),{'Status': {Value: varApproval}})

 

Now all you need to do is to customize the Onselect property of the Approve and Reject buttons to set varApproval to the right value.



Did you like my post? Please give it a thumbs up! Did I resolve your issue? Please click Accept as Solution to close the topic and so other members of the community can find solutions more easily.

View solution in original post

6 REPLIES 6
BCBuizer
Super User
Super User

Hi @Harshavardhan22 ,

 

You can use a variable for that. Use the below code in the OnSucces property of the form:

 

Patch('Expenses', LookUp('Expenses', ID = varRecord.ID),{'Status': {Value: varApproval}})

 

Now all you need to do is to customize the Onselect property of the Approve and Reject buttons to set varApproval to the right value.



Did you like my post? Please give it a thumbs up! Did I resolve your issue? Please click Accept as Solution to close the topic and so other members of the community can find solutions more easily.

Thanks very much @BCBuizer , 
1. Can you please help me on how to set VarApproval on approve/reject buttons.
2. Also, Should i follow the same procedure for Level 2 Approval? Setting VarApproval2 on Approve/Reject Buttons?

BCBuizer
Super User
Super User

HI @Harshavardhan22 ,

 

Do L1 and L2 use the same buttons? If yes, how does the app know if the uses is L1 or L2?

 

If you use separate buttons, you can use the below:

 

L1Approval: UpdateContext({varApproval:"L1Approved"})
L1Rejection: UpdateContext({varApproval:"L1Rejected"})
L2Approval: UpdateContext({varApproval:"L2Approved"})
L2Rejection: UpdateContext({varApproval:"L2Rejected"})


Did you like my post? Please give it a thumbs up! Did I resolve your issue? Please click Accept as Solution to close the topic and so other members of the community can find solutions more easily.
AmDev
Super User
Super User

Hi @Harshavardhan22 

 

Just chipping in also, to answer your question on the timing of the update - you could use the following expression in the OnSuccess property of the form...

 

Patch('Expenses', LookUp('Expenses', ID = YourForm.LastSubmit.ID),{'Status': {Value: varApproval}})

 

Though, a cleaner way would be to bring your Status datacard into the form, add {Value: varApproval} to the DefaultSelectedItems property of the Status combobox and then just hide the Status datacard. This way, the Status field will be updated with the submission of the form and you don't need to do any separate patching.

 

Hope this helps

Gerard

@BCBuizer ,

Thanks very much, I tried this and its working..... Yes I am using different buttons for different users....
Can you also, please help me on sending the email OnSuccess the same way we are updating the status?
I mean, If the the Level 1 Manager Approvers OnScuccess of the form I have to send L1 Approval email and if Level 1 Manager Rejects them I have to send rejection email. Currently i am sending emails from OnSelect property of the buttons.

@AmDev , 

 

Thanks very much for your quick support on the query. 

Helpful resources

Announcements
Microsoft 365 Conference – December 6-8, 2022

Microsoft 365 Conference – December 6-8, 2022

Join us in Las Vegas to experience community, incredible learning opportunities, and connections that will help grow skills, know-how, and more.

Top Solution Authors
Top Kudoed Authors
Users online (2,549)