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

ResetForm() not working

I'm having some trouble with a SharePoint form created with PowerApps

 

The form is working fine in every respect, except for clearing the form of previous values when opening a new form.  It would appear that ResetForm() isn't working correcty.

 

My research tells me to add a ResetForm() command in the OnSuccess action:

 

test.jpg

 

Even though this is set correctly, I still see previous values when opening a new form.

 

Is anyone else seeing this?  Is this incorrect placement?

8 REPLIES 8
Microsoft Employee

Re: ResetForm() not working

Hello Matt,

 

Is this something that happens with a specific applciation? For example, if you create a brand new application (File/New/Start with your data) out of your SharePoint list, does the same problem show up there?

Please note that if ou have any default values configured for your SharePoint fields then those values will be set automatically on resettting a form that is in the "new" mode.

MattHobbs
Level: Powered On

Re: ResetForm() not working

Yes, this is specific to one application.

 

I'm creating a tabbed SharePoint form based on ideas presented here:  PowerApps Tabbed SharePoint Form

 

I'm using a global variable and field values to calculate a score.  When I open a new form, values from the previous saved form will display in the fields.  

scoring.jpg

 

I'm not sure why ResetForm() isn't clearing the values.

Microsoft Employee

Re: ResetForm() not working

It is hard to come up with the exact issue since I cannot reproduce this issue. I hope the ideas below will help you find the problem:

1. Note that when a form is reset, it resets all its controls

2. When a control is reset, it copies its default values. For example, if you have a ComboBox control that has some values in its DefaultSelectedItems property but has something else selected, the values from DefaultSelectedItems will automatically become selected on Reset

3. If yous SharePoint form is linked to a list that has default values, those values should be populated on resetting the form.

4. Make sure that the Form is reset after it is switched to the "New" mode and not before.

MattHobbs
Level: Powered On

Re: ResetForm() not working

This reply will be quite lengthy, so I apologize ahead of time.  Smiley Happy

 

To zero-in on the issue, I decided to simplify the form.  I created a new list with very few columns:

 

Title 

Score (Number)

Question1 (Choice)

Question2 (Choice)

Question3 (Choice)

 

Choices:

Yes

No

N/A

 

I created a basic form with an extra label to display the variable value during runtime

 

2018-06-13_13-50-32.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I made these changes to the form:

==========================================

Created a global variable in the OnNew event:

Set(varRunningTotal,0)

 

Added this to the OnChange event for each Question field to calculate responses

If(DataCardValue3.Selected.Value="Yes", Set(varRunningTotal,varRunningTotal + 1))

 

Attempted to pull the list value into the variable in the OnEdit event, but both approaches displayed an error

complaining of a data type mismatch2018-06-13_13-08-14.png

 

 

 

 

 

Attempt1: Set(varRunningTotal,DataCardValue2.text)

Attempt2: Set(varRunningTotal,Value(ThisItem.Score))

 

Removed it for now

 

 

 

 

 

 

 

 

 

 

 

Added this to the three events shown to reset the variable when the form closes

Set(varRunningTotal,0)2018-06-13_13-22-29.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Added varRunningTotal to the Default property of the Score field to display the value.

==========================================

The idea is that when a user selects "Yes" to any of the questions, varRunningTotal will increment by 1 and the value is saved back to the Score field

 

When I saved and ran the form from the list, I input a simple form to give me a score of 3 and saved it. 

 

I clicked on the list item to get into the edit form

 

The form loads and Score initially displays as 3 and then updates to 6 by the time the form loads

2018-06-13_13-48-50.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

I have two main questions

 

  1. When loading the edit form, how to I set the variable to the stored list value for Score?
  2. What is causing the variable to persist after the form has closed?

 

I'm pretty sure this has something to do with the way I'm handling these variables, but not sure what I'm doing wrong.  

 

Thanks for all your help!

Microsoft Employee

Re: ResetForm() not working

Thank you for the detailed information. I think I know what the issues are.

1. I assume you have ComboBox controls in the cards that are bound to the 3 choices fields. If so then please note that ComboBox does not have an output property named "Text". You can get the selected value as DataCardValue2.Selected.Value in case of a choice field with "allow multiple selections=false" (which I believe is your case).

2. The reason you get extra submits is actually because of a problem in the ComboBox control. Unfortunately, it issues the "OnChange" events even in cases when the value is updated internally and not by user interaction. The workaround for this issue would be to store the previous value and increment the "varRunningTotal" only in case the new value is "yes" and it is different from the previous value.

Hope that heps.

MattHobbs
Level: Powered On

Re: ResetForm() not working

This is great!  

 

Can you give me an example of the syntax to make it work?  I'm struggling with the syntax of multiple conditions and actions.  I took a stab at it, but I get errors.  Smiley Happy

 

If((DataCardValue3.Selected.Value="Yes" And Last(DataCardValue3.SelectedItems).Value != "Yes"), Set(varRunningTotal,varRunningTotal + 1))

Microsoft Employee

Re: ResetForm() not working

The following should work:

 

If(DataCardValue3.Selected.Value="Yes", If(PrevValue<>"Yes", Set(varRunningTotal , varRunningTotal +1);Set(PrevValue, DataCardValue3.Selected.Value)),Set(PrevValue, DataCardValue3.Selected.Value))

It would be good to initialize the variables (for example in Screen1.OnStart):

 

 

Set(varRunningTotal ,0);Set(PrevValue,"")

 

 

MattHobbs
Level: Powered On

Re: ResetForm() not working

Thanks for thre great help!

 

Unfortunately, this didn't work for me either.  It kept throwing errors.

 

After days of struggle, I finally removed the running total feature and added a "Calculate" button on the form. It seems more stable when the calculations are done all together.  Not my most elegant solution, but it works to get the right value in the box!  Smiley Happy

 

 

EDIT:

I found the issue with saving back to the list was a problem of my own creation. Smiley Happy

 

In my many attempts to troubleshoot this issue, I tried to use a variable in the Update property. Unfortunately, I forgot to set it back. 

 

The update field (now) correctly reads:   

DataCardValue38.Text

 

Helpful resources

Announcements
firstImage

Watch Sessions On Demand!

Continue your learning in our online communities.

SecondImage

Follow PowerApps on Twitter

Stay Up-to-Date by following PowerApps on Twitter

Top Community Contributors for July 2019

Top Community Contributors for July 2019

Let's thank our top community contributors

Power Platform 2019 release wave 2 plan

Power Platform 2019 release wave 2 plan

Features releasing from October 2019 through March 2020

FirstImage

Power Platform World Tour

Coming to a city near you

thirdimage

PowerApps Community User Group Member Badge

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

FourthImage

Join PowerApps User Group!!

Connect, share, and learn with your peers year-round

FifthImage

Dynamics 365 and Power Platform April 2019 Release notes

Features releasing from April 2019 through September 2019!

Users Online
Currently online: 47 members 4,193 guests
Please welcome our newest community members: