cancel
Showing results for 
Search instead for 
Did you mean: 
Reply
samuelJ
Responsive Resident
Responsive Resident

Set variable in forall

It looks like its not possible to set a variable in a forAll() loop.  Any way around this?

 

My overall problem is SQL Server API limitation.  I am running into too many records to patch for the 100 API calls per 10 seconds.  I wanted to try and create a large SQL statement and then run that with Flow.  

 

Within my forall() loop my plan was to append onto a string variable for each record in the collection.  

 

Thank you!VarInLoop.PNG

4 REPLIES 4
v-xida-msft
Community Support
Community Support

Hi @samuelJ ,

Do you want to set a variable within a ForAll function?

 

Setting a variable within a ForAll function is not supported within PowerApps currently. If you would like this feature to be added in PowerApps, please submit an idea to PowerApps Ideas Forum:

https://powerusers.microsoft.com/t5/PowerApps-Ideas/idb-p/PowerAppsIdeas

 

As an alternative solution, I think collection could achieve your needs. On your side, you could consider use Collection to store the string value instead of the Set function. Please consider take a try with the following workaround:

Clear(SQLStatementCollection);
ForAll(
       toUpdateSmall,
       Collect(SQLStatementCollection, "abc")
)

If you want to concat these values within the SQLStatementCollection using a space (' '), please use the following formula (set Text property of a Label to following😞

Concat(SQLStatementCollection, Value & " ")

 

In addition, if you want to store the column value from your toUpdateSmall collection into the SQLStatementCollection, please modify above formula as below:

Clear(SQLStatementCollection);
ForAll(
       toUpdateSmall,
       Collect(SQLStatementCollection, ColumnNameFromtoUpdateSmall)
)

Please consider take a try with above solution, check if the issue is solved.

 

Best regards,

Community Support Team _ Kris Dai
If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.
Anonymous
Not applicable

This would be extremely helpful to implement, as I was trying to use a ForAll last week to loop through the values in a collection to Set variables attached to the Default properties of various input text boxes, using Switch expressions.

 

ForAll(

     collectionName,

     Switch (

          collectionName.key1 = val1, Set(defaultInput1, collectionName.key1),

          collectionName.key2 = val2, Set(defaultInput2, collectionName.key2),

          collectionName.key3 = val3, Set(defaultInput3, collectionName.key3)

    )

)

 

I was attempting the above to load data from my collection into input text / numeric boxes in the OnVisible screen event so a user could read the previously saved data and be able to update it. I'm still looking for a workaround..

I'm having the same issue as well. Were there any solution/update to this?

HarjitSamra
Advocate II
Advocate II

It's a bit of a pain not having access to variables in a ForAll but using a collections works well - though it does make the "code" a bit more difficult to read.  This is how I do it:

 

Add a line to the Form OnVisible to reset the collection (unless you're using the variable like a Global in which case put it in the App OnStart)

ClearCollect(colVariables, {colvarVariableOne:""});

 

Then to read the value use

First(colVariables).colvarVariableOne

 

And to set the value use:

Patch(colVariables, First(colVariables), {colvarVariableOne:"NEW VALUE"});

 

One thing that can catch you out is that collection column types are set when the collection is initiated so set the default value to be of that type.  For example to create a datetime column use:

ClearCollect(colVariables, {colvarHoliday:DateTimeValue("01/01/2000 00:00"});

 

Helpful resources

Announcements
Power Platform Conf 2022 768x460.jpg

Join us for Microsoft Power Platform Conference

The first Microsoft-sponsored Power Platform Conference is coming in September. 100+ speakers, 150+ sessions, and what's new and next for Power Platform.

365 EduCon 768x460.png

Microsoft 365 EduCon

Join us for two optional days of workshops and a 3-day conference, you can choose from over 130 sessions in multiple tracks and 25 workshops.

Users online (3,561)