问题描述
这是一个示例 (var1 * var2) / (var3 * (23 * 100))
这些变量将被替换为实际数字,因为它们是用户输入。目前,我正在使用连接到我的 Web API 的电源自动化流程来抛出任何计算并解决它。然后发回结果。我在 API 上使用 ncalc 和/或 DataTable。
我希望做的是在任何控件(如标签或文本)中传递计算。如果将 1+1 放在标签控件的 Text 属性上。它会立即显示数字 2,但由于我正在传递字符串,因此它不起作用。我可以使用类似 Value("100" * "300") 这样的东西,只要我们坚持使用数学运算符,它就可以工作,但是当我们有这样的左括号和右括号时会失败 (21 * 100) / (0.43 * () 23 * 100))
如果您有解决方法,我将不胜感激。提前致谢。
解决方法
您可以在不使用 Power Automate 的情况下处理所有包含变量的计算。
示例:
创建一个 TextInput 并在 'onChange' 函数中插入
Set(var1;Value(TextInput1.Text))
创建第二个 TextInput 并在“onChange”函数中插入
Set(var2;Value(TextInput2.Text))
创建一个标签并在文本函数中插入
var1 + var2
每次更改 TextInputfields 中的值时,标签都会更新。
,这只是一个简单的例子。随函附上我的一项计算,它写在包含括号的 Textfield 的 text 属性中:
Round((var_Moment - (var_FuelArm * Slider_Fuel.Value)) / (var_GM -Slider_Fuel.Value );0) & " mm"
它不仅适用于变量,还适用于来自其他控件的表达式。
因为要传递字符串,所以必须将它们转换为值并将它们分配给变量。
Set(var1;Value(your String Value))
这就是重点,我试图在我的第一个答案中强调。
,这是一个希望对您有用的解决方案,它使用免费的 mathjs API 来执行计算。
PowerApps
通过按钮触发器将用户输入发送到 PowerAutomate
流。
PowerAutomate 流程步骤:
- PowerApps 触发器
- 初始化变量 -> 值:“在 PowerApps 中询问”
- HTTP
- 响应 PowerApp 或流 -> 值:body('HTTP')['Body']
PowerApps Button
属性 OnSelect
创建一个变量并使用用户输入作为参数触发流以接收响应:
UpdateContext({ var_Result: PowerAppsHTTPRequestCalculation.Run(tb_Input.Text).result})
PowerApps Text Label
属性 Text
以显示结果值:
var_Result
我最终通过使用 PCF 控件解决了这个问题,并且由于它支持使用 JavaScript,因此我可以简单地使用 eval 函数并解决您抛出的任何方程。