1

下面是我尝试过的示例 canvas-app 函数,但是我想将以下可以访问集合数据的 canvas-app 函数转换为使用它:

If("EC - Empire Complex" in BuildingDropdown.Selected.Value, Distinct(Filter(Area, "1" in buildingID), storey), If("BTB - Brani Terminal Building" in BuildingDropdown.Selected.Value, Distinct(Filter(Area, "2" in buildingID), storey), If("KW - Keppel Workshop" in BuildingDropdown.Selected.Value, Distinct(Filter(Area, "3" in buildingID),storey), If("CSO - Container Side Office"in BuildingDropdown.Selected.Value, Distinct(Filter(Area, "4" in buildingID), storey), If("Others" in BuildingDropdown.Selected.Value, Distinct(Filter(Area, "5" in buildingID), storey))))))

如何转换上述 canvas-app 函数,使其可以使用 collect 函数和 if 函数?谢谢。

4

3 回答 3

2

不清楚您想在哪里使用 PowerApps 收集功能。请详细说明。

它也不清楚是什么"Area"。它是集合还是 Excel 表、Sharepoint 列表或 SQL 表?

在您的 PowerApps 代码中选择一个命名约定并始终如一地使用它。

例子:

  • 在您的代码中为所有集合添加前缀col
    • colArea
  • 制作所有数据表(Sharepoint、SQL 等)ALL CAPITALS_WITH_UNDERSCORES
    • MY_SHAREPOINT_LIST

然后,一目了然,您可以知道它是什么类型的数据源。

您还可以通过删除嵌套If的 's来简化代码:

If(
    "EC - Empire Complex" in BuildingDropdown.Selected.Value, 
        Distinct(
            Filter(Area, "1" in buildingID), 
            storey
        ), 
    "BTB - Brani Terminal Building" in BuildingDropdown.Selected.Value, 
        Distinct(
            Filter(Area, "2" in buildingID), 
            storey
        ), 
    "KW - Keppel Workshop" in BuildingDropdown.Selected.Value, 
        Distinct(
            Filter(Area, "3" in buildingID),
            storey
        ), 
    "CSO - Container Side Office"in BuildingDropdown.Selected.Value, 
        Distinct(
            Filter(Area, "4" in buildingID), 
            storey
        ), 
    "Others" in BuildingDropdown.Selected.Value, 
        Distinct(
            Filter(
                Area, "5" in buildingID), 
            storey
        )
)

也要记住Switch()(尽管在这里不会有太大的好处)。

If如果有分支逻辑,通常使用嵌套的,但不用于多选。

于 2020-11-18T04:31:05.807 回答
1

好吧,如果在 Powerapps 中有单独的语法可以使用,即 if (condition = true, "do this", "else do this")。如果您希望在 if 中发生多个动作,那么您的语法变为 if(condition = true, "do this";"do this also";"do this also", "else do this";"else do this also" )。

如果很容易的话,你可以有收集功能。

于 2019-01-08T13:24:18.230 回答
0

这是一个工作 - 希望自我解释 - 用于选择和取消选择电源应用程序集合中的记录的示例=>

If( LookUp(Sammlung3; ID=ThisItem.ID).ID >0; 
          RemoveIf(Sammlung3; ID=ThisItem.ID); 
    Collect(Sammlung3;ThisItem)
  )

如果在集合中找到记录,则将其删除,否则将其放入集合中

于 2020-11-10T15:22:43.800 回答