cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Dvictor881
Level: Powered On

Avoid multiple user update - SharePoint list data

I have a booking system which is available to everybody in the company. Behind the scene, I am using SharePoint as the backend database. When you reserve the booking, it changes status to "Closed". Everything works fine except when we have multiple users at the same time trying to reserve the same booking. here are details :

 

1) BrowseScreen : Show only appointments where status is not "Closed"

2) DetailedScreen: When you click on any particular item in BrowseScreen it takes you to DetailedScreen where you can reserve it by clicking a button.

3) When you click the button: It patches that record and upates status value to "Closed" and updates who has actually reserve it. 

 

Issue: When the appointment is "Open", multiple users at the same time can go to DetailedScreen where they will see reserve button. So for e.g., User A and User B are both on the detail screen can see the button to book at the same time as the appointment is Open. User A, book it first and it updates SharePoint list record to Closed and with User A email address. User B now clicks on the button and it uses the same patch function and now updates it to User B email address. 

 

Is there a way, we can avoid this conflict ? How can we check when User B clicks the button that the appointment is closed and redirects them to a screen or show them a message that this appointment is already booked ?

1 ACCEPTED SOLUTION

Accepted Solutions
Sienna
Level 10

Re: Avoid multiple user update - SharePoint list data

So can you please try to use a variable in your button instead of the gallery just to make sure the gallery doesn't cause that problem. That means in your BrowseScreen gallery change the navigate code to 

Navigate( DetailScreenName, ScreenTransition.None, { SelectedID: ThisItem.ID}) I assume that you navigate to detail screen by taping on the BrowseGallery1 on browse screen

Then Change the code in your button

....If(First(LookUp(Appointments,ID=SelectedID),Status.Value))="Closed", Navigate(DoubleBookingScreen,None)......;Patch('Appointments',First(Filter('Appointments',ID=SelectedID)),{........

 

This should (hopefully) fix the problem with patching next available record. I also assume that Your ID in the datasource are unique and there are no duplicates. Please let me know how it works

View solution in original post

9 REPLIES 9
Sienna
Level 10

Re: Avoid multiple user update - SharePoint list data

Hi

Have you tried to protect it with "if" in the patching button. I don't know the gallery name or the datasource columns name so this is only example

Refresh(YourDatasourceName); If(BrowseGallery.Selected.ValueColumn="Closed", Navigate(ErrorScreen.ScreenTransition.None), Patch(YourCodeforPatch))

However if the patch function isn't protected for multiple entry then even this won't work when 2 users will click the button exactly at the same time. I haven't tried that yet but I hope this essential patching protection is already implemented in PA. Please let me know if it works.

Dvictor881
Level: Powered On

Re: Avoid multiple user update - SharePoint list data

Thanks Sienna for replying. That's exactly what I was trying but it actually books the next available booking slot for some reason. If I split these two actions that means click first button refresh and then click the other one with just If statement, it works.

 

When we execute both of these statements, it doesn't work. It still goes to patch function but it updates the next available record.  I am not sure if I need to include some wait function between Refresh and If clause.

Sienna
Level 10

Re: Avoid multiple user update - SharePoint list data

can you make a picture of the code you are using in OnSelect property of the button. And also what is the datasource name and what collumns names you have in your datasource 

Dvictor881
Level: Powered On

Re: Avoid multiple user update - SharePoint list data

Datasource name is Appointments and I change "status" ( Choice field) , "ReservedBy" (People field) columns which I patch but Its a SharePoint data source behind the scenes so I am using ID column as well. To give an example, if I am booking a 10 AM slot and if that gets booked when I am on DetailedScreen. Below code books the next available slot at 11 AM. Its good that it doesn't overwrite the 10 AM appointment but it books different time slot which user has selected so its definitely a problem. Please let me know if you need any other information. 

 DuplicateIssue.png

Sienna
Level 10

Re: Avoid multiple user update - SharePoint list data

So can you please try to use a variable in your button instead of the gallery just to make sure the gallery doesn't cause that problem. That means in your BrowseScreen gallery change the navigate code to 

Navigate( DetailScreenName, ScreenTransition.None, { SelectedID: ThisItem.ID}) I assume that you navigate to detail screen by taping on the BrowseGallery1 on browse screen

Then Change the code in your button

....If(First(LookUp(Appointments,ID=SelectedID),Status.Value))="Closed", Navigate(DoubleBookingScreen,None)......;Patch('Appointments',First(Filter('Appointments',ID=SelectedID)),{........

 

This should (hopefully) fix the problem with patching next available record. I also assume that Your ID in the datasource are unique and there are no duplicates. Please let me know how it works

View solution in original post

Dvictor881
Level: Powered On

Re: Avoid multiple user update - SharePoint list data

Thanks a lot for your help. It worked. Though sometimes, I see that SelectedID doesn't get updated to the selected record but i believe, I can live with that. Thank you!

Sienna
Level 10

Re: Avoid multiple user update - SharePoint list data

What do you mean by doesn't get updated?

Dvictor881
Level: Powered On

Re: Avoid multiple user update - SharePoint list data

Lets say, I have selected record A with ID 41, I click on that appointment (Now SelectedID is 41) and then I went back to browsescreen and now this time I have clicked on record B with ID 42. Now, I would expect SelectedID to be 42 but sometimes it still shows 41 for record 42. Ofcourse, because of the logic which we are using, it navigates user to error screen but I am not able to find a repeatable way to say what exactly is the issue. It works 9 out of 10 times but 1 time, it doesn't update it. 

Sienna
Level 10

Re: Avoid multiple user update - SharePoint list data

Ok.. so I never had that problem before. It might be that you get disconected from the network which I doubt that but you can try to change the navigate to

If(Connection.Conected, Navigate( DetailScreenName, ScreenTransition.None, { SelectedID: ThisItem.ID}))

Or you can try to check it before navigating and prevent happenig it by

UpdadeContext({SelectedID:ThisItem.ID}); If(ThisItem.ID=SelectedID,Navigate( DetailScreenName, ScreenTransition.None, { SelectedID: SelectedID}))

Helpful resources

Announcements
thirdimage

Power Automate Community User Group Member Badge

Fill out a quick form to claim your user group badge now!

sixthImage

Power Platform World Tour

Find out where you can attend!

Power Platform 2019 release wave 2 plan

Power Platform 2019 release wave 2 plan

Features releasing from October 2019 through March 2020

fifthimage

Microsoft Learn

Learn how to build the business apps that you need.

Top Kudoed Authors (Last 30 Days)
Users online (5,317)