cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Guy
Level: Power Up

Offline mode - using Collect() to capture form and upload to sharepoint when reconnected

Hi there - I'm trying to retrofit an existing sharepoint-driven powerapp to allow it to work offline and upload data when reconnected. At this point I've got to the below changes for the submission tick/check on the form page (1) and an upload timer running (2).

 

(1)

If(Connection.Connected,SubmitForm(EditForm1),Collect(Collection1,SubmitForm(EditForm1));SaveData(Collection1,"offlinesave"));ResetForm(EditForm1)

 

(2)

If(Connection.Connected,
ForAll(Collection1,SubmitForm(EditForm1));
Clear(Collection1)
)

 

As you may have guessed this doesn't have the desired effect - any guidance or support greatly appreciated. 

 

Thanks - Guy

5 REPLIES 5
Anonymous
Not applicable

Re: Offline mode - using Collect() to capture form and upload to sharepoint when reconnected

I'm trying to do the same thing. Did you see Carlos Figueira's post ? I just had a colleague of mine test my application (an event check in app,) last night, and due to connectivity issues with the PATCH function the app didn't go as smoothly as I would have liked (100+ people checked in, and each item was being PATCH'd individually for check in.)

 

Here's Carlos post... I am going to try to solve this today and will let you know if I have any luck.

 

https://powerusers.microsoft.com/t5/PowerApps-Forum/Does-the-PowerApps-solution-have-capability-for-...

 

  • Create a collection for all added items, to call 'Collect' on the data source when it's back online
    • Change the 'OnSelect' handler of the 'confirm' button to, depending on the connection state, either submit the form or add the item to the collection
  • Create a collection of all updated items, to call 'Patch' on the data source when it's back online
    • Similar to the previous one, the 'confirm' button would need to account for the connection state
  • Create a collection of all deleted items, to remove once the data source is online; similar to the others, the button state would need to be updated
  • Update the browse gallery source to use a local collection instead of the data source directly (or a sort / filter / search function on that data source), so that added / deleted / modified items when offline appear 'immediately' for the app user
  • Handle conflicting edits to the same item: for example, if an item is added / then modified, ideally it should only be sent once to the server; if an item is modified / deleted, then there is no need to send the edits
  • Handle conflicts that may happen if multiple users update the same item at different points. If the app is online, then the user will know when the changes are being submitted that there is a conflict, and can resolve immediately
Juanesrojas
Level: Powered On

Re: Offline mode - using Collect() to capture form and upload to sharepoint when reconnected

Hello.

 

I have the same problem trying to refresh an onedrive excel connection when the app get connected again.

 

whta I do:

 

* Screen 1: button with the OnSelect: Refresh(formulario1);Navigate(Screen2,ScreenTransition.Fade)  "Formulario1" is the datasource to excel in onedrive

* Screen2: I have a Data Table connected to "Formulario1" onedrive excel data Source

 

when I start the app with internet connection, the screen 2 shows the formulario1 values normally.

then I go to flymode and when press the button on screen1, it goes to screen 2 and shows me a connection error (Normal) 

I go to flymode off an with the button goes to screen 2 and the data table shows me the formulario 1 values. 

 

In that way it works fine. The problem occurs when I launch powerapps bein in flymode on, the app load, and when i press the button (In flymode on) the datatable doesn't shows nothin (Normal because still in flymode) but when I turn off the flymode, It shows an "unknown error" if I press the button.

 

It seems that the app isn't able to create a connection with the data source when the app has been launched on flymode.

DeviLal
Level: Power Up

Re: Offline mode - using Collect() to capture form and upload to sharepoint when reconnected

Dear All,

 

     I am stuck  in the middle of  Offline submission.

 

     I have  a table --production and its have 2  columns are productcode and productname.

  

     The production table created from common data service  datasource.

 

    Can you please give me the example with produvtion table in the offline submission.

 

    I have tried   Onvisible and onselect  but its not worked getting some syntax error.

 

   Please give me the step by step.

 

   Please anybody give me exact answer or suggestions to solve this issue.

 

Regards,

Devilal

 

     

juresti
Level 8

Re: Offline mode - using Collect() to capture form and upload to sharepoint when reconnected

This is the way to collect form data and then submit it when you come back online.

 

First using Collect:

Collect stores table or record values. I found the Submit form is not a correct format of table or record value.

Instead you have to store the fields from the form to the collection like so.

....Example

Collect(dataToWrite,
{lightid_1:dcvLightId.Text,
username:dcvUserName.Text,
ownership:dcvOwnership.Text,
provider:dcvProvider.Text,
audit_status:dcvAudit_Status.Text,
comments:dcvComments.Text});

 

Each time you write a record offline it stores the data that is entered on the form into the collection (Table) as a row.

 

When you come back online you can't use the SubmitForm either since all that does is submits the currently displayed form.

 

What I found is you have to Patch your table, which I understand could be hard using common data source since it requires an id for the row.

Any other source is not a problem.

 

You write the data online like so.

In this instance, dataToWrite is an actual table with rows, since we created it while collecting record rows.

In my case I used a spreadsheet on OneDrive as the source.

....Example

ForAll(dataToWrite,
Patch(Table3,
dataToWrite)
);

You would want to clear it as soon as it is written.
Clear(dataToWrite);

 

I hope this provides a solution. 

juresti
Level 8

Re: Offline mode - using Collect() to capture form and upload to sharepoint when reconnected

I forgot to mention after clearing the written data, it should be saved again to replace the local data (clear it) so the next time the cycle runs it won't rewrite the same records.

Helpful resources

Announcements
thirdimage

Power Apps 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

SecondImage

Difinity Conference

The largest Power BI, Power Platform, and Data conference in New Zealand

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