【问题标题】:Sorting a Filtered Table based on data in another table根据另一个表中的数据对过滤表进行排序
【发布时间】:2020-09-30 08:04:28
【问题描述】:

我有两个表(SharePoint 列表)。 员工包含每个员工的记录和有关他们的一般信息。 加班记录包含每个加班班次的记录,包括工作班次的员工和日期。因此,加班记录与员工具有多对一的关系。 'Overtime Records'.Employee.Id JOINS TO Employees.ID

我已成功在自定义库中放置了一个文本字段,用于计算每个员工使用以下代码工作的加班次数。 TimesWorked 是自定义库中的文本标签对象。

TimesWorked.Text = CountRows(
   Filter(
       'Overtime Records',
       Employee.Id = ThisItem.ID
   )
)

我的问题是让画廊本身按此值排序。这是我尝试编码的Gallery.Items 属性:

Gallery.Items = Sort(Employees,
    CountRows(
        Filter(
            'Overtime Records',
            Employee.Id = ID
        )
    )
)

这应该按CountRows() 表达式排序。 ID(全部大写)是 Employee 表中的一个字段。 Employee.Id 是加班记录表中的一个字段。我怀疑我引用的 ID 字段可能存在歧义问题,因为 Filter 表达式嵌套在 Sort 表达式中。它不允许我指定Employees.ID;我收到语法错误。

【问题讨论】:

    标签: powerapps powerapps-formula powerapps-canvas


    【解决方案1】:

    在您可以使用 CountRows 对员工表进行排序之前,您需要通过添加一列来提供该信息 - 不,不向 SharePoint 列表添加一列:)

    Power Apps 使您能够使用 AddColumns Function 向表中添加列

    一步一步:

    1. 重命名列功能: RenameColumns(Employees,"ID", "IdentifierEmployees")

    2. 添加列功能:AddColumns(RenameColumns(Employees,"ID", "IdentifierEmployees"),"CountOfOvertime", CountRows(Filter('Overtime Records',EmployeeId = IdentifierEmployees)))

    3. SortByColumns 功能: SortByColumns(AddColumns(RenameColumns(Employees,"ID", "IdentifierEmployees"),"CountOfOvertime", CountRows(Filter('Overtime Records',EmployeeId = IdentifierEmployees))),"CountOfOvertime",Descending)

    在第一步中重命名列是我发现为我工作的方式,因为如果我有“EmployeeId = Id”,过滤器部分将不起作用

    希望对你有帮助

    【讨论】:

    • 天哪,这很有前途。我明天会试试这个并报告!
    • 太棒了!它工作得很好。那太有帮助了。谢谢! RenameColumns() 也是一个很好的提示,可以避免今后出现冲突的字段名称!
    • 太棒了!是的,RenameColumns 被证明是一种为列赋予更有意义的名称并避免混淆和冲突的好方法
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-11-15
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-22
    相关资源
    最近更新 更多