【问题标题】:PowerApps merge related tablesPowerApps 合并相关表
【发布时间】:2019-07-13 02:29:08
【问题描述】:

我是 PowerApps 的新手,在开始 PowerApps 项目(涉及关系数据库)之前,我正在探索关系数据库。我正在尝试对两个实体(饮料和人类)进行简单连接,其中饮料具有与“人类”的主要 ID 相关的 BuyerID 字段。 所以我尝试了 ForAll(Filter(drink, (name = "Americano") And (drink.BuyerID = human.PrimaryId) ), Collect(AmericanoDrinkers, {FirstName: human.firstName, LastName: human.lastName})) 获取一组带来美式咖啡的人,但我收到Invalid argument type 错误drink.BuyerID = human.PrimaryId。 有任何想法吗?我尝试将= 更改为in 以及将drink.BuyerID 更改为drink[@BuyerID] 之类的东西。请注意,drink.BuyerID 数据类型是“Lookup”,human.PrimaryId 是整数,所以我会因为类型不同而收到此错误吗?此外,我确定数据没有任何问题,因为在 excel 中编辑饮料实体时,powerapps 插件会在选择买方 ID 时显示相关人员。

【问题讨论】:

    标签: relational-database powerapps


    【解决方案1】:

    理论上你想做的是这样的:

    ClearCollect(AmericanoDrinkers,
        Filter(human,
            PrimaryId in Filter(drink, name="Americano").BuyerID
                )
            )
        )
    

    在实践中,根据您的饮料和/或人类数据源的不同,您可能会遇到授权问题。 如果可以避免的话,我不建议使用 ForAll,因为你冒着对每一行调用数据源的风险,而像我建议的公式这样的公式将被并行处理(允许委托)。

    如果上面的表现不令人满意,你也可以试试这个两步法:

    ClearCollect(FilteredIds, GroupBy(Filter(drink, name="Americano"), "BuyerID", "AllRows"));
    ClearCollect(AmericanoDrinkers, Filter(human, PrimaryId in FilteredIds.BuyerID))
    

    【讨论】:

    • 好主意,但我收到 PrimaryId 的“无法自动将此文本值转换为记录”错误,human.PrimaryId 收到“无法在此上下文中使用表值”。 “in”函数也是不可委托的,但那是另一回事了。
    • 我刚刚测试过,我原来的一步法应该可以工作,你确定你包括了 .BuyerID 吗?这会将表转换为值列表,因此 PrimaryId 应该是文本而不是记录。无论如何,我添加了一个两步方法,因此您甚至可以检查 FilteredIds 的内容以检查是否一切正常。
    【解决方案2】:

    问题只是设置,我只是在饮料实体中创建了一个新字段 (BuyerID2) 并将其设置为一个数字值,而不是像 BuyerID 那样的查找,所有 3 个(我最初的一个,以及两个 Meneghino提供)解决方案运行良好(尽管我不得不将drink.BuyerID = human.PrimaryId 更改为BuyerID2 in human.PrimaryId)。

    【讨论】:

      【解决方案3】:

      您可以尝试在画廊内使用画廊.... 我曾多次在画廊中使用画廊,使用它有点令人困惑,但看起来非常合乎逻辑并且对我来说效果很好。

      【讨论】:

        猜你喜欢
        • 2020-10-08
        • 1970-01-01
        • 2021-06-30
        • 2021-11-14
        • 2019-03-09
        • 2019-08-26
        • 2018-03-18
        • 1970-01-01
        • 2013-04-18
        相关资源
        最近更新 更多