Hi Shane, Great refresher. One tip I would add (for folks who are not color blind), Global variable names show up in green when referenced and context variable names show up in blue :)
Hey Shane, Great video refresher on global vs context variables. One trick I have been using regarding context variables if I really need it's value on a different screen and don't want to use a global: passing a context variable to another screen using the navigate function. I had a scenario where I needed to pass a month value from a dropdown to another screen that also had a month dropdown dialog box so the user would have that month already selected on that screen. Navigate(‘Screen2’,None,{varSelectedMonth: dropdown1.selected.value}) - the navigate function allows us to pass one or multiple context variables to another screen.
We should start a support group: GVA (Global Variables Anonymous). I used to use the heck out of them because I thought I needed to. Nowadays, I typically use record variables (e.g.: Set(varO365Prof, Office356Users.UseProfileV2(User().Email))) and then reference components of that record as needed throughout the app. This works great for user profiles, items from galleries, etc. and helps cut down some of the chatter back and forth. Also, a naming convention is important. Use what works for you, but I always use the prefixes "var" for global and "ctx" for context variables.
Microsoft recommend prefixing local variables with loc and global variables with gbl. I think it's a really good idea. Having them both as var is a bit dangerous, imo. Fine for small apps, but might cause confusion in a big app.
Hi Shane - great vid, thanks. Another cool feature of context variables is they can be initiated on screen navigation (i.e. created on Screen1 but utilised in the screen being nav'd too). One thing i also would love to get a better understanding of is use of Variables in storing whole tables of records - i know this is what Collections are for (another variable type) but i'm pretty sure you can also do this in glb variables (not sure on Context variables tho). Cheers again
Hi Shane, Thanks so much for providing information and tips regarding variables. I have a question. So basically what i want to do is create a form where the user will input information in various screens. So screen 1, they will enter information, then screen 2 they will enter information and keep going upto screen 5. Now what i want to do is take all those entered information and store it into a file as a single row item in Excel. This is ROW 1 items. Then a new user comes in enters new information and then this creates ROW 2 data in the same file. I searched around and got help from CHAT GPT, it said to do it using Variables and store information in variables and use it to export data into excel. Could you Shed some light into this scenario, or if you could help me out that would be greatly appreciated. Thank you.
Hi Shane, I am struggling with how to set a global variable when the app first loads. I have a boolean variable (varShowInfo) that I use as the value of a label's visible property. The variable needs to start always with the value false. I have tried placing a Set(varShowInfo, Boolean(false)) in many places to no avail. I put it in the App OnStart event, but that only seems to execute if in the treeview, I select the ellipsis for App and click RunOnStart. That would be fine if it ALWAYS ran the OnStart when the App is started. Any help on this would be greatly appreciated. Great videos! Thanks
Do you need to reset the context variables (set them to blank) if you are leaving the screen and then you want to come back to the same screen again, or will they reset themselves?
Hi Shane, is it possible to add a global variable so that a button on the main screen is hidden, until say, three other screens are visited?. I tried adding a global variable to onvisible for the secondary screens, but nadda. :(
Sure. I would set(varScreen1, true) on screen 1 OnVisible. Then repeat for screen 2 and 3. Then set the first button Visible property to varScreen1 And varScreen2 And VarScreen3 like that. It will show when all 3 are true.
Hi shane , I wonder if you could help me.. I have a dropdown with onchange value "UpdateContext( { varwl: 1 } )", -it helps me detect if there's a change then if the user submits a button, with "UpdateContext( { varwl: 0 } )" - resetting it back to zero it is not working very well, sometimes it work sometimes not,,,,it seems weird,,,escpecially when I get back to edit mode ,varwl still display 1 even if i hit the button which should be reset to 0. any thought?
You often say not to reference gallery1.selected but to store the reference as a variable instead. What would that variable look like? (Link to video?) Thx for the helpful Blank() tip!
Shane I have a lot of issues with powerapps lately. Code missing from live app but features still available on embedded version, ui elements (like the gallery control) moved on the x axis on most of the screens of my app, even on apps I haven't touched for months. Even if i place them correctly, save, publish still the same next time I open the app. I tried reaching out to power app devs but nothing so far. Any idea what happen ?
Hi Shane, Great refresher. One tip I would add (for folks who are not color blind), Global variable names show up in green when referenced and context variable names show up in blue :)
Thanks for sharing Sam.
Hey Shane,
Great video refresher on global vs context variables.
One trick I have been using regarding context variables if I really need it's value on a different screen and don't want to use a global: passing a context variable to another screen using the navigate function.
I had a scenario where I needed to pass a month value from a dropdown to another screen that also had a month dropdown dialog box so the user would have that month already selected on that screen.
Navigate(‘Screen2’,None,{varSelectedMonth: dropdown1.selected.value}) - the navigate function allows us to pass one or multiple context variables to another screen.
Thanks for sharing Brendan! 🐶
Just made my day!! Been suck and I could tell I needed a variable but wasn't sure how, and boom, I'm fixed! Thank you!
Awesome 🤩
I now prefix variables as gvarName for globals and cvarName for context variables. No more broken brain cells.
I like it :)
We should start a support group: GVA (Global Variables Anonymous). I used to use the heck out of them because I thought I needed to. Nowadays, I typically use record variables (e.g.: Set(varO365Prof, Office356Users.UseProfileV2(User().Email))) and then reference components of that record as needed throughout the app. This works great for user profiles, items from galleries, etc. and helps cut down some of the chatter back and forth.
Also, a naming convention is important. Use what works for you, but I always use the prefixes "var" for global and "ctx" for context variables.
I love that you have thought all of this out Chad. 🙂
Shane, very clear! Thanks a lot for sharing your knowledge!
My pleasure!
I feel you made this just for me! Thanks Shane! :-)
I did Joe. I knew you were looking for this. 😁
Microsoft recommend prefixing local variables with loc and global variables with gbl. I think it's a really good idea. Having them both as var is a bit dangerous, imo. Fine for small apps, but might cause confusion in a big app.
Agree Charles. For me old habits die hard. :)
Hi Shane - great vid, thanks. Another cool feature of context variables is they can be initiated on screen navigation (i.e. created on Screen1 but utilised in the screen being nav'd too). One thing i also would love to get a better understanding of is use of Variables in storing whole tables of records - i know this is what Collections are for (another variable type) but i'm pretty sure you can also do this in glb variables (not sure on Context variables tho). Cheers again
Yeah, I think you can store tables in regular variables but just seems like chaos so I have never messed with it. :)
Thank you so much Shane. New knowledge learnt
Awesomeness 🐶
It's okay context variables...I'm here for you. 👨💻
You are too nice Khar. #TeamGlobalVariables
Great video Shane !! Thx a lot
My pleasure!
Really nice review of the world of variables. And you are the one to blame for me not using contextual variables 😂😂😂😂😂😂
Frank you are in good company. No one likes context variables. 😂
Thanks for the overview.
Happy to help
Hi man, awesome video, excellent information!
Thank you so much Ariel. I hope you have a great day - Grant :] (Shane's kid helping with the responses) 😎 🐶
Thank you Shane, most of what I have learned I have learned from you and Reza. I am definitely interested in Power Platform University.
Awesome. If you have questions about university feel free to shot me an email. shane at powerapps911 dot com 😁
Hi Shane,
Thanks so much for providing information and tips regarding variables. I have a question. So basically what i want to do is create a form where the user will input information in various screens. So screen 1, they will enter information, then screen 2 they will enter information and keep going upto screen 5. Now what i want to do is take all those entered information and store it into a file as a single row item in Excel. This is ROW 1 items. Then a new user comes in enters new information and then this creates ROW 2 data in the same file. I searched around and got help from CHAT GPT, it said to do it using Variables and store information in variables and use it to export data into excel. Could you Shed some light into this scenario, or if you could help me out that would be greatly appreciated. Thank you.
Hi Shane,
I am struggling with how to set a global variable when the app first loads. I have a boolean variable (varShowInfo) that I use as the value of a label's visible property. The variable needs to start always with the value false. I have tried placing a Set(varShowInfo, Boolean(false)) in many places to no avail. I put it in the App OnStart event, but that only seems to execute if in the treeview, I select the ellipsis for App and click RunOnStart. That would be fine if it ALWAYS ran the OnStart when the App is started. Any help on this would be greatly appreciated.
Great videos!
Thanks
Do you need to reset the context variables (set them to blank) if you are leaving the screen and then you want to come back to the same screen again, or will they reset themselves?
They will not automatically reset, you will need to reset them if you want them to be blank when you come back to the screen.
How do you set global variables on start-up, rather than tying them to buttons?
Look in the tree view for the App object. It has a property called OnStart. Put your code there.
I have a video that shows it here ruclips.net/video/7MxXmGOkeLQ/видео.html
Hi Shane, is it possible to add a global variable so that a button on the main screen is hidden, until say, three other screens are visited?. I tried adding a global variable to onvisible for the secondary screens, but nadda. :(
Sure. I would set(varScreen1, true) on screen 1 OnVisible. Then repeat for screen 2 and 3. Then set the first button Visible property to varScreen1 And varScreen2 And VarScreen3 like that. It will show when all 3 are true.
@@ShanesCows You sir, are a legend! Thank you. I was doing this in reverse and pulling my hair out!
Hi shane , I wonder if you could help me..
I have a dropdown with onchange value "UpdateContext( { varwl: 1 } )", -it helps me detect if there's a change
then if the user submits a button, with "UpdateContext( { varwl: 0 } )" - resetting it back to zero
it is not working very well, sometimes it work sometimes not,,,,it seems weird,,,escpecially when I get back to edit mode ,varwl still display 1 even if i hit the button which should be reset to 0. any thought?
Great video!
You often say not to reference gallery1.selected but to store the reference as a variable instead. What would that variable look like? (Link to video?) Thx for the helpful Blank() tip!
eg Set(varRecord, {FirstName: GERALD, LastName: DAHL})
eg (two rows) eg Set(varRecord, {FirstName: GERALD, LastName: DAHL},{FirstName: RICHARD, LastName: DAHL})
Set(varRecord, ThisItem) covered in this video. ruclips.net/video/691pRyRHWBU/видео.html
@@ShanesCows excellent, thx!!!
Thanks Shane - another great vid.
Is it possible to use this global variable to change all of the app font size?
You would have to set all of the controls in the app Size property to the value of the variable and then yes.
Shane I have a lot of issues with powerapps lately. Code missing from live app but features still available on embedded version, ui elements (like the gallery control) moved on the x axis on most of the screens of my app, even on apps I haven't touched for months. Even if i place them correctly, save, publish still the same next time I open the app. I tried reaching out to power app devs but nothing so far. Any idea what happen ?
Hey Don - I have not seen anythign like that. 😬 Hopefully it has gotten better. Sorry, that is annoying.