1

我有两个表(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;我收到语法错误。

4

1 回答 1

1

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

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

一步步:

  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”,过滤器部分将不起作用

希望能帮助到你

于 2020-06-11T20:45:39.090 回答