如何在Powerapps中一起使用collect和if函数?

时间:2018-12-19 02:03:14

标签: powerapps powerapps-formula powerapps-collection

下面是我尝试过的示例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函数?谢谢。

3 个答案:

答案 0 :(得分:2)

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

还不清楚"Area"是什么。是Collection或Excel表,Sharepoint列表还是SQL表?

在PowerApps代码中选择命名约定,并始终使用它。

示例:

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

然后,您可以一目了然地分辨出它是什么类型的数据源。

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

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,而不是用于多个选择。

答案 1 :(得分:0)

好吧,如果在Powerapps中有if可以使用单独的语法,即if(条件= true,请“执行此操作”,“否则请执行此操作”)。如果您希望if内部发生多个动作,那么您的语法将变为if(condition = true,“执行此操作”;“也执行此操作”;“也执行此操作”,“否则执行此操作”;“否则同时执行此操作” )。

如果很容易就可以具有收集功能。

答案 2 :(得分:0)

这是一个可行的-希望能自我解释-用于在Power App Collection中选择和取消选择记录的示例=>

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

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