cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
user180618
Helper I
Helper I

Submit form for data from two screens

I have a Power Apps form connected to a Sharepoint list. When a user enters data into the form and clicks Finish, it creates a new list item with that data in the columns. This is done by the Finish button having OnSelect set to:

 

 

SubmitForm(Form1);NewForm(Form1)

 

I want to add a few more datacards (they are connected to the same Sharepoint list) on a second screen in a form called Form2. So now on the first screen I have a Next page button that is set to Navigate(Screen2) instead of a Finish button. So far so good.

 

But I moved the Finish button to the second page, so it is still set to SubmitForm(Form1). However I want the datacards from screen 1 and 2 to be saved in the Sharepoint list.

 

What's the best way of doing this? Is there a way to split one form across two screens? Or maybe two tabs on the same screen (to avoid scrolling down)? Or is it possible to have OnSelect submit form 1 and 2?

 

Also, should OnSuccess be set to Navigate(Finish) in both form 1 and 2 in this case?

 

Many thanks.

2 ACCEPTED SOLUTIONS

Accepted Solutions

Hi@user180618,

Based on the issue that you mentioned, do you want to submit 2 forms to update the same record in your SP list?

Could you please share a bit more about the scenario?

Actually, if you want to submit multi forms, the correct syntax should be formatted as below:

Patch(YourListName).Defaults(YourListName),Form1.Updates,Form2.Updates)

From your description, I think you could achieve your needs as below.

Add the first Button within the first screen and set OnSelect as below:

ResetForm(Form1);NewForm(Form1)

Fill the Form1 and then set the OnSelect for the second Button as below:

Navigate(Screen2);ResetForm(Form2);NewForm(Form2)

Add a Button within the second screen and set OnSelect as below:

Patch('F.P Details of Module',Defaults('F.P Details of Module'),Form1.Updates,Form2.Updates)

Notice that 'F.P Details of Module' is my SP list name, please replace it with yours.

Hope it could help.

Regards,

Qi

Best Regards,
Qi

View solution in original post

RandyHayes
Super User
Super User

@user180618 

The resolution has nothing to do with a Gallery, the information presented in the video discusses splitting your forms - which is what you are doing in your app.  

The trouble you will run into with this approach is that if these forms are both to the same datasource, then you will end up with two records.  You need something that ties them together.  In the video we used the glbSelectedRecord to tie the two together.

 

But, the approach is relatively simple in that you need to have the first screen form represent the fields that you want on that screen and then your second form will have all of the fields in it (including all the ones from the first screen) They should be hidden (Visible false) as to not repeat...but they must be in the Form.

 

The forms should be in Edit mode (rather than New as the form does not expose a default record in New mode as would be needed in your case).

 

The Item property of the first form should be Defaults(yourDataSource)

The Item property of your second form should be Form1.Updates

When you submit, you will be submitting Form2 only.  There is NO need to submit Form1 and it will cause duplicate incomplete records.

 

Opening your form for a new record should be done with EditForm(Form1)  do NOT use NewForm on this as you have already set the Item to be a new item in this case.

 

Do not use the Patch method that was suggested as this will render the functionality of the Editforms as worthless

 

With the above suggestion mentioned, you will continue to have the valuable aspects of your form (OnSuccess, OnFailure, LastSubmit, etc.)  Patch does NOT give you this and you lose it all.

 

So, to summarize - the above properties should be set and then your "final" formula would be:

   SubmitForm(Form2); ResetForm(Form1)

 

Form 2 will take care of itself as will Form1.

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up below. Solved your problem? - Click on Accept as Solution below. Others seeking the same answers will be happy you did.
NOTE: My normal response times will be Mon to Fri from 1 PM to 10 PM UTC (and lots of other times too!)
Check out my PowerApps Videos too! And, follow me on Twitter @RandyHayes

Really want to show your appreciation? Buy Me A Cup Of Coffee!

View solution in original post

4 REPLIES 4
RandyHayes
Super User
Super User

@user180618 

Please have a look over my video on splitting forms across screens without losing the functionality of the form.

Let me know if you have any questions on it.

 

I hope this is helpful for you.

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up below. Solved your problem? - Click on Accept as Solution below. Others seeking the same answers will be happy you did.
NOTE: My normal response times will be Mon to Fri from 1 PM to 10 PM UTC (and lots of other times too!)
Check out my PowerApps Videos too! And, follow me on Twitter @RandyHayes

Really want to show your appreciation? Buy Me A Cup Of Coffee!

Thanks but I'm not sure it solves my issue, I don't need the entries to go into a Gallery. I have 2 screens with 2 forms that are connected to the same Sharepoint list. I just want the entries from form 1 and 2 to be saved in the list when I click on my Finish button.

Would setting OnSelect to this work?

SubmitForm(Form1,Form2);NewForm(Form1,Form2)

 

Hi@user180618,

Based on the issue that you mentioned, do you want to submit 2 forms to update the same record in your SP list?

Could you please share a bit more about the scenario?

Actually, if you want to submit multi forms, the correct syntax should be formatted as below:

Patch(YourListName).Defaults(YourListName),Form1.Updates,Form2.Updates)

From your description, I think you could achieve your needs as below.

Add the first Button within the first screen and set OnSelect as below:

ResetForm(Form1);NewForm(Form1)

Fill the Form1 and then set the OnSelect for the second Button as below:

Navigate(Screen2);ResetForm(Form2);NewForm(Form2)

Add a Button within the second screen and set OnSelect as below:

Patch('F.P Details of Module',Defaults('F.P Details of Module'),Form1.Updates,Form2.Updates)

Notice that 'F.P Details of Module' is my SP list name, please replace it with yours.

Hope it could help.

Regards,

Qi

Best Regards,
Qi
RandyHayes
Super User
Super User

@user180618 

The resolution has nothing to do with a Gallery, the information presented in the video discusses splitting your forms - which is what you are doing in your app.  

The trouble you will run into with this approach is that if these forms are both to the same datasource, then you will end up with two records.  You need something that ties them together.  In the video we used the glbSelectedRecord to tie the two together.

 

But, the approach is relatively simple in that you need to have the first screen form represent the fields that you want on that screen and then your second form will have all of the fields in it (including all the ones from the first screen) They should be hidden (Visible false) as to not repeat...but they must be in the Form.

 

The forms should be in Edit mode (rather than New as the form does not expose a default record in New mode as would be needed in your case).

 

The Item property of the first form should be Defaults(yourDataSource)

The Item property of your second form should be Form1.Updates

When you submit, you will be submitting Form2 only.  There is NO need to submit Form1 and it will cause duplicate incomplete records.

 

Opening your form for a new record should be done with EditForm(Form1)  do NOT use NewForm on this as you have already set the Item to be a new item in this case.

 

Do not use the Patch method that was suggested as this will render the functionality of the Editforms as worthless

 

With the above suggestion mentioned, you will continue to have the valuable aspects of your form (OnSuccess, OnFailure, LastSubmit, etc.)  Patch does NOT give you this and you lose it all.

 

So, to summarize - the above properties should be set and then your "final" formula would be:

   SubmitForm(Form2); ResetForm(Form1)

 

Form 2 will take care of itself as will Form1.

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up below. Solved your problem? - Click on Accept as Solution below. Others seeking the same answers will be happy you did.
NOTE: My normal response times will be Mon to Fri from 1 PM to 10 PM UTC (and lots of other times too!)
Check out my PowerApps Videos too! And, follow me on Twitter @RandyHayes

Really want to show your appreciation? Buy Me A Cup Of Coffee!

Helpful resources

Announcements
Power Apps Africa Challenge 2022

Power Apps Africa Challenge

Your chance to join an engaging competition of Power Platform enthusiasts.

Super User 2 - 2022 Congratulations

Welcome Super Users

The Super User program for 2022 - Season 2 has kicked off!

September Events 2022

Check out all of these events

Attend in person or online, there are incredible conferences and events happening all throughout the month of September.

Government Carousel

New forum: GCC, GCCH, DoD - Federal App Makers (FAM)

In response to the unique and evolving requirements of the United States public sector, Microsoft has created Power Apps US Government.

Users online (4,133)