隔离画布应用中的问题

画布应用允许你设计具有许多不同的视觉对象和各种数据连接的应用。 使用 IntelliSense应用检查器 来防范常见问题。 “监视 ”和“ 变量”面板 可以帮助你进行调试。

下面是在画布应用中隔离问题的一些其他技术。

使用调试标签检查公式

公式可能比较复杂。 当事情出错时,很难确定哪个部分失败。 调试标签是一种有用的技术,用于查看公式的不同部分的结果。

调试标签是一个 标签 ,其 Text 属性设置为感兴趣的公式。 它允许你确切地了解 Power Apps 如何处理这些公式。 为了避免范围 bug,请将调试标签插入其他控件(如窗体)之外。

假设组合框控件显示小于预期,下拉列表选项为空。

展开的组合框,其中显示了一个空白区域,其中选项应位于下拉列表中。

检查组合框是否已正确配置。 例如, Items 属性设置为下面的复杂公式:

AddColumns(
  GroupBy(
    Filter( Products, Rating > 4 ),
    "ProductType",
    "Details"
  ),
  "Total quantity",
  Sum( Details, Quantity )
)

从最内部的表达式 Filter( Products, Rating > 4 )开始。 插入调试标签并设置其 Text 属性以测试该表达式的结果。 要验证的一些有用信息:

  • 检查结果数是否按预期显示: CountRows( Filter( Products, Rating > 4 ) )
  • 检查第一个结果并验证筛选器是否按预期工作: "Rating of first result is " & First( Filter( Products, Rating > 4 ) ).Rating
  • 通过组合其名称来检查结果: Concat( Filter( Products, Rating > 4 ), ProductName & ", ")

提示

使用数据集时,调试表可用于预览记录。 此概念类似于调试标签。 插入一个 数据表 ,其 Items 属性设置为感兴趣的数据集。

你可能想要使用 FirstN 和 LastN 函数 来提高数据集的性能。

确认正确计算表达式后,可以转到下一个外部表达式 GroupBy( Filter( Products, Rating > 4 ), "ProductType", "Details" )。 通过有条不紊地继续操作,可以找出复杂表达式的哪个部分不起作用。

使用空下拉列表选项时,请从 DisplayFields 属性开始。 想象一下, 它已设置为 [ProductType]。 使用调试标签验证此字段是否由 Power Apps 识别并包含文本。 由于所有下拉列表选项均为空,因此检查任何记录就足够了。 让我们选取第一条记录并查看其 ProductType 字段是什么。 将调试标签设置为:

First(
  AddColumns(
    GroupBy(
      Filter( Products, Rating > 4 ),
      "ProductType",
      "Details"
    ),
    "Total quantity",
    Sum( Details, Quantity )
  )
).ProductType

如果结果为空,可能是:

  • ProductType 记录的字段确实为空。 如果数据集来自应用外部,请在 Power Apps 外部检查它。
  • 一个或多个表达式不起作用。 按上文所述将其分解,缩小范围。 这可能是 Power Apps bug 或编写公式时的错误。
  • 数据无法访问 Power Apps。 这可能是网络问题、数据源问题或 Power Apps bug。

如果结果包含文本,则可能是控件的 Power Apps bug。 可以通过支持请求报告 bug,并使用其他控件作为解决方法。

尝试其他控件

若要了解问题是否与特定控件有关,请尝试使用具有相同 输入或输出数据类型 的其他控件。

布尔

选项和表

日期和时间

图像和媒体

Number

文本

所有类型

  • 标签,在将值转换为文本后

如果同一问题发生在其他控件上,则问题与使用的公式或数据源有关。 继续执行上述调试步骤,进一步隔离问题。

如果问题仅发生在特定类型的控件上,则可能是控件 bug。 可以将 bug 报告给Microsoft。

尝试其他应用结构

对于另一个控件内的控件,公式的行为可能有所不同。 例如,库内的控件可以使用 ThisItem,但库外部的控件不能。 库组件外部的控件不能引用内部的控件。

此不同的标识符可见性称为 范围。 包含其他控件的控件引入了新的范围。

如果公式未在包含控件内工作,则它可能与范围相关。 请尝试在容器外部使用相同的公式。

例如,库中标签控件应显示每个记录的名称,但没有显示任何文本。 Label.Text 设置为 ThisItem.Name. Gallery.Items 设置为 Products.

库显示空白而不是文本。属性面板显示用于库中标签的公式。

若要检查是否是范围问题,请在应用顶层的库外插入调试标签 设置其 Text 属性以显示数据集的第一条记录的名称: First(Products).Name

调试标签应具有与库第一行相同的结果。 如果没有,则可能是 Power Apps 的范围 bug,你可以通过 支持请求进行报告。 另一方面,如果两者均为空,则问题可能与数据源有关。

范围问题的一些可能解决方法:

  • 将控件移到容器外部
  • 引用全局变量或上下文变量中的数据
  • 使用 Patch 避免使用 “编辑”窗体 控件

还原到早期版本

如果尚未对应用进行重大更改,并且应用在重新发布后突然停止工作,请尝试 将其还原到以前的版本。 如果再次工作,请检查所做的更改,以查看应用可能已损坏的内容。

有时,新版本的 Power Apps 可能会引入 bug。 相反,新版本可能会带来 bug 修复。 Microsoft 支持部门可以建议是还原到较旧的创作版本还是升级到较新的版本。 请记住,如果自行更改创作版本,则对非推荐版本的支持有限。

创建最小重现应用

创建 最少的重现应用 的过程可能会发现复杂应用不明显的应用配置错误。 即使问题未解决,你也会缩小原因范围,并更轻松地向其他人解释问题。

后续步骤

使用监视器调试画布应用

另请参阅

常规 Power Apps 调试策略