So I am plowing along, pretty successfully using what I learned in in this post (https://powerapps.microsoft.com/en-us/blog/return-an-array-from-flow-to-powerapps-response-method/) to call an SQL stored procedure from a Flow and then call that Flow in turn from a PowerApp but I have encountered a roadblock and am not coming up with the right strategy to solve it. Here is a step-by-step of where I am and I would be extremely appreciative of any direction someone could point me in. I have been browsing those sites to answer the question ("Can I pass more than one argument from a PowerApp to a Flow that needs four). While I have seen some similar posts (https://powerusers.microsoft.com/t5/Building-Power-Apps/PowerApp-Button-pass-2-seperate-parameters-to-a-Flow-for/m-p/92677#M34789), nothing that directly addresses this problem, which I suspect others are encountering from the variety of different posted questions.
I have created a SQL Server stored procedure that takes 4 string arguments that works successfully.
ALTER PROCEDURE [dbo].[FlexQueryProductInventory]
@Salesperson varchar(50) = '',
@Crop varchar(50) = '',
@Variety varchar(50) = '',
@WarehouseName varchar(50) = ''
AS
BEGIN
SET NOCOUNT ON;
SELECT [Company Number]
,[Company Name]
,[Bus Unit]
,[Bus Unit Desc]
,[LOCATION]
,[Item Nbr Short]
,[Item Number]
,[Item Desc01]
,[Item Desc02]
,[Unit of Measure]
,[Qty On Hand]
,[Qty In Transit]
,[Qty On PO]
,[Qty Commit]
,[Qty On Backorder]
,[Qty Available]
FROM [BI_Mart].[dbo].[RT_Product_Inventory]
WHERE
[LOCATION] LIKE '%' + @Salesperson + '%' AND
[Item Desc02] LIKE '%' + @Crop + '%' AND
[Item Desc01] LIKE '%' + @Variety + '%' AND
[Bus Unit Desc] LIKE '%' + @WarehouseName + '%'
ORDER BY [LOCATION], [Item Desc02], [Item Desc01], [Bus Unit]
END
I have created a Flow to execute this. I have not gotten this to execute completely correctly yet in test mode since it is only prompting me for a single variable instead of four. If I enter a string during a test, it placed that into each variable and while it ran successfully, it didn’t return any rows (because of course the search criteria didn’t result in any matches). I then created a simpler stored procedure with a single WHERE test that did test out successfully (which is where I got the JSON payload to feed to the Response step to generate the schema). So I have not successfully executed this Flow with proper strings being fed to each of the four variables which was perhaps a foreshadowing of the problem I am encountering. I have fiddled around a little with the configuration of the Initialize Variable step but to no avail so far.
Flow with multiple parameter variables
I then went into my PowerApps and started to configure the Button to call the Flow and there is where I have encountered the block. Notice the Invalid number of arguments: received 4, expected 1 error message. This seemed eerily similar to my inability to test my Flow with more than one string entry (one for each variable).
(the screen shots are showing up in line so I have attached them as files to the bottom)
Now we get to my question. Can more than one argument be passed to a Flow from PowerApps? If so, of course, how? I am beginning to believe based on reading the posts that I might have to pass a concatenated CSV string to the Flow in one argument. Then I will have to make the Flow parse the single input string and populate each of the four variables, perhaps with the Split function which I don’t know how to do yet so I need to better understand that process too (as I suspect that will also be useful in the future). But I am wondering if perhaps there is a different way to write the Flow from scratch to accept more than the one argument. This seems like it should be straightforward but as we know very little is straightforward in PowerApps and Flow😉.
For just a little more context, here is the whole PowerApps app where I will populate the Data Table in the middle with the results of this stored procedure based on the search parameters passed and the lower Gallery with the results of the second stored procedure which fortunately only requires one variable to be passed after an item is selected from the Data Table.
This is all I had to do. Had the same issue as OP and I just removed the flow and the re-added it. Works a treat!
Hi Mark,
Thanks for the bit of Syntax.
Seeing you have commas between the values did the trick.
I thought I had tried commas as a separator earlier today, then tried semi colons, then something else, etc etc.
It was a circular exercise in frustration.
I'm successfully bringing over 3 parameters from one power app to the other via the flow now.
Next is to dig into the weeds further by trying to bring over a fourth.
This fourth one is from a sharepoint list drop down but the weird thing is the name that appears in the flow.
In SharePoint it is ClientID
But in the flow it is listed as ClientID id
I've looked through sharepoint and for the life of cannot figure out why the flow is seeing it as ClientID id
So Im not sure if it isn't working because of the name or because of the dropdown or what.
Either way. I appreciated your assistance with the commas syntax. 3 fields of the 4 is better than what I had this morning with only one field.
You are on the right track. This is one of the most poorly documented areas as well as the most tedious and weird. First of all, it appears that you can pass as many variables to Flow as needed but the Flow itself drives this process. When you set up the Flow, just do an Init Variable for each parameter and when prompted, use the “Ask in PowerApps” Dynamic content for it. The real painful part is inserting the Flow run command into the PowerApp. The best thing is to just create a standalone button initially and then use the Action/PowerAutomate command to insert it the first time. Once you do this, then you can just type it into another command that is more complicated like placing the results into a ClearCollect function. You can delete the initial button after that. The syntax is as you have it <Flowname>.Run(var1, var2, var3,...) and the syntax checker will ensure the the number of variables in the parentheses matches the number of variables that the Flow is looking for.
I have not been successful passing anything but strings so far (so no numbers or Booleans or arrays yet - it might be possible but I haven’t gotten it to work yet). I just do the type conversions in the flow or downstream (e.g. the SQL Stored Proc).
one more thing. G-d forbid you have to change the number of arguments passed, you kind of have to start over so try to plan carefully. There are a lot of other vagaries here that are too much for this post but these are the essentials.
I will say that if you stay within the mysterious, undocumented railings, I have found this to be very stable in operation but I have wasted a lot of time getting to this point.
Hi, Im running into a similar issue. But your post does not show the syntax for the power app button.
PowerAppName.Run(FieldName.Text)
Is as far as I have gotten. Can you post an example of the syntax for multiple fields? Thanks.
Thank you!
I needed to create a pdf, save it to sharepoint and also send that pdf as an attachment back to the user. (with one button in powerapps)
So I needed more than one argument from powerapps to Flow.
"It is there but hidden for some reason and you need to either query for it with an "Ask" or just hit the show more button."
K.
I finally solved this little mystery and the short answer is "Yes, you can pass more than one argument to a Flow from PowerApps but it doesn't seem to be documented anywhere". Here is the short description:
I was on the right track in that you just put in an Initialize Variable step for each argument (variable) you want to pass and make certain that you select "Ask in PowerApps" from the Dynamics Content for each Value when prompted. This is where it gets a little squirrely because while the "Ask in PowerApps" comes up initially in the Dynamic Content box on the first variable, it "disappears" for some reason in subsequent Initialize Variable steps. It is there but hidden for some reason and you need to either query for it with an "Ask" or just hit the show more button. When you do that, all is good and things work more or less as one might expect.
Now here are all of the "gotchas" that made this difficult to solve and generated an enormous amount of frustration.
This argument passing issue was really, really annoying because it pointed up
So as Willie the Shake would say "all's well that ends well". And, had I needed to, I now know how I could have used the other strategy to solve the problem by passing a string with multiple values concatenated together as a CSV and then parse them out and assign them to Flow variables using the split() function which I couldn’t do before (and yet again, the documentation on how to do that was fragmented and found all over the place in different blog posts and messages).
I will try to come back into the post and add a few screenshots later if I have some time.
I did but not in a very controlled setting. I really would like to know that I am on the correct structural track to solve this and then go back and execute the changes in carefully scripted setting to ensure that I am not flopping around (a technical term) and wasting a lot of time trying things willy-nilly.
Did you try removing the Flow from PowerApps and then re-adding it?
---
Please click "Accept as Solution" if my post answered your question so that others may find it more quickly. If you found this post helpful consider giving it a "Thumbs Up."
WarrenBelz
146,645
Most Valuable Professional
RandyHayes
76,287
Super User 2024 Season 1
Pstork1
65,997
Most Valuable Professional