Power App:查找和过滤功能无法检索正确的项目

问题描述 投票:0回答:1

我正在尝试根据另一个集合 A 的一列或多列的值从集合 B 中检索数据。

但是 LookUp 函数在这种情况下无法按预期工作。

ClearCollect(
    A;
    {
        DateVal: DateValue("01/03/2024");
        NNI: "A";
        Presence: 0
    };
    {
        DateVal: DateValue("04/03/2024");
        NNI: "B";
        Presence: 1
    };
    {
        DateVal: DateValue("05/03/2024");
        NNI: "C";
        Presence: 0
    };
    {
        DateVal: DateValue("06/03/2024");
        NNI: "D";
        Presence: 0
    };
    {
        DateVal: DateValue("07/03/2024");
        NNI: "E";
        Presence: 0
    }
)
;;
ClearCollect(
    B;
    {
        DateVal: DateValue("01/03/2024");
        DayNumber: 1
    };
    {
        DateVal: DateValue("04/03/2024");
        DayNumber: 4
    };
    {
        DateVal: DateValue("05/03/2024");
        DayNumber: 5
    };
    {
        DateVal: DateValue("06/03/2024");
        DayNumber: 6
    };
    {
        DateVal: DateValue("07/03/2024");
        DayNumber: 7
    };
    {
        DateVal: DateValue("08/03/2024");
        DayNumber: 8
    }
);;

ClearCollect(
    C;
    ForAll(
        A;
        {
            ADateVal: ThisRecord.DateVal;
            BDayNumber: LookUp(B; DateVal = ThisRecord.DateVal; DayNumber)
        }
    )
)

这是我从 C 系列中获得的内容:

enter image description here

我希望为每一行检索与 DateVal 相对应的正确 BDayNumber,这对于两个集合来说是完全相同的。

powerapps powerapps-formula
1个回答
0
投票

在 LookUp 表达式中,有两个位置(范围)可以获取“DateVal”中的值(表 A 和表 B)。除非指定,否则该值将到达最近的范围,在本例中是表 B。ThisRecord 也是如此:ForAll 和 LookUp 都引入了这个新范围,并且它将使用最接近的范围。所以在表达式中

ForAll(
    A;
    {
        ADateVal: ThisRecord.DateVal;
        BDayNumber: LookUp(B; DateVal = ThisRecord.DateVal; DayNumber)
    }
)

LookUp 表达式中的比较是将 B 表的 DateVal 属性与其自身进行比较 - 因此它将始终返回第一行。

您可以使用 As 关键字为表达式所使用的表“命名”,使其查看正确的范围,如下所示:

ClearCollect(
    A;
    {
        DateVal: DateValue("01/03/2024");
        NNI: "A";
        Presence: 0
    };
    {
        DateVal: DateValue("04/03/2024");
        NNI: "B";
        Presence: 1
    };
    {
        DateVal: DateValue("05/03/2024");
        NNI: "C";
        Presence: 0
    };
    {
        DateVal: DateValue("06/03/2024");
        NNI: "D";
        Presence: 0
    };
    {
        DateVal: DateValue("07/03/2024");
        NNI: "E";
        Presence: 0
    }
)
;;
ClearCollect(
    B;
    {
        DateVal: DateValue("01/03/2024");
        DayNumber: 1
    };
    {
        DateVal: DateValue("04/03/2024");
        DayNumber: 4
    };
    {
        DateVal: DateValue("05/03/2024");
        DayNumber: 5
    };
    {
        DateVal: DateValue("06/03/2024");
        DayNumber: 6
    };
    {
        DateVal: DateValue("07/03/2024");
        DayNumber: 7
    };
    {
        DateVal: DateValue("08/03/2024");
        DayNumber: 8
    }
);;

ClearCollect(
    C;
    ForAll(
        A As TableA;
        {
            ADateVal: TableA.DateVal;
            BDayNumber: LookUp(B As TableB; TableB.DateVal = TableA.DateVal; TableB.DayNumber)
        }
    )
)
© www.soinside.com 2019 - 2024. All rights reserved.