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

Setting 2 variables, with Button onSelect, on a multi-form, multi-tab, screen

I have one screen in Powerapps which has multiple forms for a Client. Each of these forms are connected to a different CDS entity (table) of information about the same Client. I also have a set of buttons that represent Tabs for the various forms that the user can view/edit. On this one screen, I have Icons in the top banner to represent New, Cancel, and Save fuctions for any of these forms.

 

I want the OnSelect function of the Buttons(Tabs) to set two variables. One to be used by each form's Visbible property, so that it is the form visible when clicked. But, at the same time, I want to set a second variable that equates to the form name so that, when the user clicks the New/Cancel/Save Icons in the top banner, it will perform the correct action for the correct form.

 

So far I have tried using 2 Global variables in the OnSelect for the buttons, 2 Context variables, and have tried mixing Global with Context variables. Nothing yet has met the requirement. I either get errors on the buttons or errors on the New/Cancel/Save Icons.

 

I have included a picture (minus the actual form fields) of the set-up.

Has anyone tried to create the exact same configuration? Am I dealing with a limitation or bug in PowerApps?

Any help is greatly appreciated

 

Thanks,

Steve

12 REPLIES 12
Maurits
Level 8

Re: Setting 2 variables, with Button onSelect, on a multi-form, multi-tab, screen

Hi Steven, your UpdateContext statement seems okay, but you didn't provide us with the errors you are facing.
What are the messages on the other icons?

 

Kind regards,
Maurits

Steven_Ross_Lee
Level: Powered On

Re: Setting 2 variables, with Button onSelect, on a multi-form, multi-tab, screen

Thanks Maurits.

When I set only the buttonSelect variable on all of the buttons shown on my form, there is no error presented on any of the buttons. There are errors presented on the New/Cancel/Save icons, but that is because I have not yet created the 2nd variable that they are referred to.

When I set the second variable on just one button (leaving the other buttons with just 1 variable set), everything seems to be fine. The errors on the New/Cancel/Save icons disappear because the that variable now exists. I also tested the functionality of viewing the various forms, and executing a save and cancel action. These all worked properly.

The problem begins when I try to setup the 2nd variable on more than one button. The error I get on the second button setup with the two variables is "Incompatible type. We can't evaluate your formula because the context variable types are incompatible with the types of values in other places in your app."

I also now get an error on all 3 icons, which is "The function 'ResetForm' has some invalid arguments."

 

/Steve

Super User
Super User

Re: Setting 2 variables, with Button onSelect, on a multi-form, multi-tab, screen

@Steven_Ross_Lee 

Steve,  Can you provide a little more information on the specific formulas that have errors on those other controls?

It appears that you might be "stepping on" a defined variable and the designer is unable to evaluate what it should be.

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up. Solved your problem? - Click on Accept as Solution. Others seeking the same answers will be happy you did.
Steven_Ross_Lee
Level: Powered On

Re: Setting 2 variables, with Button onSelect, on a multi-form, multi-tab, screen

Thanks Randy.

 

The formula I have in the OnSelect property for each button is

UpdateContext({buttonSelect: General_Btn.Text, formSelect: formname}). Where formname is the name of an existing form in my app.

The formula I have in the OnSelect property for the 3 icon controls, respectively, is NewForm(formSelect), ResetForm(formSelect), and SubmitForm(formSelect).

The buttonSelect variable is used to drive the Visible property of each of my forms. This works fine.

 

It seems the issue is related to setting the formSelect variable to the value of a valid form name. I can create the formSelect variable only once. If create it on on a second or third button, then I get the error messages on the button(s) and the icon controls mentioned above in my previous post. I can setup the buttonSelect variable on all of my buttons and there is no problem with that. But not with the form related variable.

 

Am I breaking some rule, or is there some undocumented limitation around variables, or is this a bug?

 

I have found myself a workaround for now. I eliminate the formSelect variable all together, and just employ the buttonSelect variable to control form visibility. Then I have setup a nested IF statement on all 3 icon controls. I don't like the fact that I have to hardcode each of my 8 form names, but it works.

 

/Steve

 

 

Super User
Super User

Re: Setting 2 variables, with Button onSelect, on a multi-form, multi-tab, screen

@Steven_Ross_Lee 

Ah...I see what you're doing now more clearly.  

Your problem is that you are trying to use the Form as a variable.  This will not work as each Form (even though it is a Form control) has a different type to it (based on it's source and structure). 

This then brings up the need to possibly reference controls by name - which does not exist in PowerApps.

 

So, what to do? Well, personally, I would go with a more "tabbed" concept using a gallery for the buttons.  Then you can key off of the selected item for all the other functions to operate.

If I had to critique a little - I would say the new, cancel and submit controls are in the wrong place (from a user experience standpoint).  AND, I target them for 2 reasons:

1 - Because you're not going to be able to indirectly reference them with a variable (this is kind of a big one for your design)

2 - Because, in many cases, you will want additional logic in your formulas for places like submit form, so this begs the question, how would you do that with only a submit form function in the icon?

3 (bonus) - because many times you will want to enable/disable the New,Cancel and Save functions based on the contents of the Form (validation), how would that logic come together in this situation?

 

So, just thinking out loud on some of this for you and giving some alternatives for this as it's not going to work the way you intend for the variable.

 

Let me know if that is clear.  I can describe more and perhaps even have a sample app for you to look at if needed.

 

 

 

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up. Solved your problem? - Click on Accept as Solution. Others seeking the same answers will be happy you did.
Steven_Ross_Lee
Level: Powered On

Re: Setting 2 variables, with Button onSelect, on a multi-form, multi-tab, screen

Thanks very much Randy for your obsevations and suggestions.

 

I'm not sure I understand why a Form name can not be used as a value for a variable. I only understand from you that it can not. 

 

I did come across a video on setting up a tabbed form using a gallery as well as one using discreet buttons.  What would be the advantage of using the gallery approach over that of buttons?

 

On your third point,  where then would I place the New, Cancel, Submit controls? My thought was that I did not want to have (in my app example) 8 sets of these Icons/Controls that I would have to hide/show.

And, can I not still enable/disable any of these 3 controls, if for example, the form changes are not validated?

 

/Thanks, Steve

Super User
Super User

Re: Setting 2 variables, with Button onSelect, on a multi-form, multi-tab, screen

 

Thanks very much Randy for your obsevations and suggestions.

No problem...only suggestions.  You know your design and data best!

 

I'm not sure I understand why a Form name can not be used as a value for a variable. I only understand from you that it can not. 

Yes, one would think you could. I know I can use the reference to a form if the form is the same (i.e. two forms that are the same), but, why would you have such a thing?  It obviously has to do with the "signature" of the form.  If I was part of the dev team, I could tell you exactly why, but for now, I have to make that assumption.  

 

I did come across a video on setting up a tabbed form using a gallery as well as one using discreet buttons.  What would be the advantage of using the gallery approach over that of buttons?

So, the biggest advantage is the reduction of repetitiveness. AND...10 buttons (for example) is 10 controls.  One Gallery with one button is 2 controls.  That reduces the performance in loading and processing for the overall app.

 

On your third point,  where then would I place the New, Cancel, Submit controls? My thought was that I did not want to have (in my app example) 8 sets of these Icons/Controls that I would have to hide/show.

And, can I not still enable/disable any of these 3 controls, if for example, the form changes are not validated?

Well...you could, but I would suspect it to be a little tricky when you are dealing with many forms. Lots of If statements and such.  So, yes, you could still use the icons concept, but I'd base my Form visibility off of either a variable from a button, or...if you go with a "tabbed" gallery approach...the Selected property of the Gallery.

I understand your push to reduce the amount of controls and doing everything on one screen - very valid - but some of the controls might just need to be there to support what you want.  Again, you know your design best as you're closest to it.

 

_____________________________________________________________________________________
Digging it? - Click on the Thumbs Up. Solved your problem? - Click on Accept as Solution. Others seeking the same answers will be happy you did.
Steven_Ross_Lee
Level: Powered On

Re: Setting 2 variables, with Button onSelect, on a multi-form, multi-tab, screen

Sorry Randy. I think I may not have made things clear enough.

 

I am using the variable buttonSelect  in the OnSelect property of each button to set the visibility of each form in my app. For example, the Contact button's OnSelect is UpdateContext({buttonSelect: Contact_Btn.Text}), and the Visible property of the Contact form is If(buttonSelect = Contact_Btn.Text, true,false).

 

The Save control for example is set to the following formula.  If(GeneralForm.Visible = true, SubmitForm(GeneralForm),ContactForm.Visible = true, SubmitForm(ContactForm),DuesForm.Visible = true, SubmitForm(DuesForm),AppointmentForm.Visible = true, SubmitForm(AppointmentForm),MattersForm.Visible = true, SubmitForm(MattersForm),CommunicationForm.Visible = true, SubmitForm(CommunicationForm),AcademicForm.Visible = true, SubmitForm(AcademicForm),SalaryForm.Visible = true, SubmitForm(SalaryForm))

 

I think I see your point on using a gallery instead, so I will try that instead of all the buttons.

 

/Thanks again, Steve

 

Steven_Ross_Lee
Level: Powered On

Re: Setting 2 variables, with Button onSelect, on a multi-form, multi-tab, screen

In case it has an impact on what we are discussing, maybe I should make clear the fact that each of these forms in my app so far, are connected to a different source. They are all CDS based, but for example, there will be multiple Dues records that relate to one record in the General(Member) entity. So, each form is connected to a different (but related) CDS Entity.

 

/Steve

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 (6,585)