cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
Highlighted
Anonymous
Not applicable

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
Highlighted
Microsoft
Microsoft

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.

Highlighted
Anonymous
Not applicable

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.

Highlighted

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.

Highlighted
Anonymous
Not applicable

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

 

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!

Highlighted

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.

Highlighted
Anonymous
Not applicable

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.  🙂

 

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

Highlighted

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,"")

 

 

Highlighted
Anonymous
Not applicable

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!  🙂

 

 

EDIT:

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

 

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
Community Conference

Power Platform Community Conference

Check out the on demand sessions that are available now!

News & Announcements

Community Blog

Stay up tp date on the latest blogs and activities in the community News & Announcements.

secondImage

Power Platform 2020 release wave 2 plan

Features releasing from October 2020 through March 2021

Community Highlights

Community Highlights

Check out the Power Platform Community Highlights

Top Solution Authors
Top Kudoed Authors
Users online (8,840)