PowerApps: Access-like update query



我对PowerApps很陌生,需要将Access数据库迁移到PowerApps,首先它的表到Dataverse。这是模型驱动应用程序的典型用例,表之间有许多关系。所有Access表都有一个自动生成的ID字段作为它们的主键。

我通过Excel ex/import将所有表转移到Dataverse。在导入之前,我将所有ID字段(列)重命名为ID_old,并让Dataverse为每个表创建自己的、自动生成的ID字段。

我想要实现的是重新建立表之间的所有关系,其中外键指向Dataverse提供的新主键,因为我想避免双键。作为第一步,我在ID_old字段和相关表中相应的(旧)外键字段之间创建了关系。

在老式的Access中,我现在只需运行一个更新查询,用相关表的新ID填充新的(但空的)外键字段。最后,我将更改到新的主键和外键的关系,然后删除旧的ID字段。

我卡住的地方是更新查询。我在网上搜索了一下,发现了几个选项,比如UpdateIf/Patch函数或Power Query或Excel ex/import等等。它们读起来都很复杂,很费时间,我想我一定是为这样一个很常见的问题监督了一个非常简单的解决方案。

有没有人可以给我指出正确的(简单的)方向?谢谢!

更有效的方法是从在Access中创建额外的ID列开始。生成guid并在那里修复外键。这可以使用一些SQL更新语句有效地完成。

当涉及到将您的Access表转移到Dataverse时,您只需在Create消息中提供您的Access影子主键。

我的解决方案如下,在我看来是相当有效的。我假设在每个Access表中都有一个自动编号的ID字段,用于关系

  1. 从Access导出表格到Excel
  2. 使用Excel将所有表中的ID字段重命名为ID_old,并将外键字段重命名为ForeignKey_old。这将使以后在Dataverse中识别字段变得容易。
  3. 导入到Dataverse,使用Power Query工具。重要:确保在最后一个导入步骤中选择ID_old作为额外的主键字段。
  4. 使用Lookup数据类型在Dataverse中重新创建所有关系。这会在表中创建一个新的空列。
  5. 现在使用"在Excel中编辑"功能在Excel中打开表格。你应该得到你的prefix_foreignkey_old列与旧的外键显示,以及对你的相关表的引用,例如prefix_referencetable.prefix_id_old,它仍然是空的。
  6. 现在只需复制完整的prefix_foreignkey_old列的值到prefix_referencetable.prefix_id_old列。
  7. 导入更改,您就完成了。

希望这对你们中的一些人有帮助。

最新更新