可以创建一个应用,用于访问 Microsoft Excel、SharePoint、SQL Server 以及在记录和表中存储数据的其他多个源中的信息。 若要最有效地处理此类数据,请查看这些结构的基本概念。
- 记录包含有关个人、地点或事物的一个或多个类别的信息。 例如,记录可能包含单个客户的姓名、电子邮件地址和电话号码。 其他工具将记录称作“行”或“项”。
- 表保存一个或多个记录,这些记录包含相同类别的信息。 例如,表可以包含 50 个客户的姓名、电子邮件地址和电话号码。
可以构建采用表名称作为参数的各种公式,就像 Excel 中的公式采用一个或多个单元格引用作为参数。 PowerApps 中的某些公式返回一个反映所指定的其他参数的表。 例如,可以创建以下公式:
- 通过将某个表指定为 Patch 函数的多个参数之一,来更新该表中的记录
使用 Patch 函数可以在复杂情况(如执行不需要用户交互的更新或使用跨多个屏幕的窗体)下修改记录。
- 通过将某个表指定为 AddColumns、DropColumns 或 RenameColumns 函数的参数,在该表中添加、删除和重命名列。 其中的任何函数都不会修改原始表。 函数根据指定的其他参数返回另一个表。
表公式
在 Excel 和 PowerApps 中,可以使用公式以类似的方式来处理数字和文本字符串:
同样,可以使用公式来访问和处理表与记录中的数据。 在某些公式中可以使用表的名称作为参数,例如,
Min(Catalog, Price) 显示 Catalog 表的 Price 列中的最小值
。 其他公式提供整个表作为返回值,例如,
RenameColumns(Catalog, "Price", "Cost") 返回 Catalog 表中的所有记录,但会将 Price 列的名称更改为 Cost。
表函数和控件属性
PowerApps 中的许多函数将表的名称用作参数,创建包含相同数据的另一个表,基于其他参数处理新表,然后返回结果。 这些函数不会修改原始表,即使它是数据源。
- Sort、Filter – 排序和筛选记录。
- FirstN、LastN – 返回表的前 N 条或最后 N 条记录。
- Abs(绝对数)、Sqrt(平方根)、Round、RoundUp、RoundDown (都是四舍五入类型)– 针对单列表的每条记录执行的算术运算,生成单列结果表。
- Left、Mid、Right、Replace、Substitute、Trim、Lower、Upper、Proper – 针对单列表的每条记录执行的字符串操作,生成单列字符串表。
备注:Left、Mid、Right(提取文本字符串的左侧、中间或右侧部分)
Trim(从文本字符串中删除多余空格)
- Len – 针对字符串列返回包含每个字符串的长度的单列表。
- Concatenate – 串联多个字符串列,生成单列字符串表。将表中的文本和字符串连成单个字符串。
- AddColumns、DropColumns、RenameColumns、ShowColumns – 表的列操作,生成包含不同列的新表。
- Distinct – 删除重复的记录。
- Shuffle – 按随机顺序排列记录。
- HashTags – 搜索字符串中的哈希标记。
- Errors – 提供处理数据源时出现的错误信息。
Lower( ShowColumns( Products, "Name" ) )
此公式创建一个单列表,其中包含
Products 表的 Name 列中的所有数据,但会将所有大写字母转换为小写字母
。 如果将某个表指定为
AddColumns
、
RenameColumns
或
DropColumns
函数的参数,可以全面重新塑造该表。
如果将某个数据源指定为其中一个函数的参数,此公式将修改该数据源的记录,并且在一般情况下,将以表的形式返回该数据源的新值
。
- Collect、Clear、ClearCollect – 在集合中创建、清除和添加记录。
- Update、UpdateIf – 更新与指定的一个或多个条件匹配的记录。
- Remove、RemoveIf – 删除与指定的一个或多个条件匹配的记录。
记录函数和控件属性
返回记录的函数:
- FirstN、LastN – 返回表的最前面或最后面的一条或多条记录。
- Lookup – 返回表中与一个或多个条件匹配的第一条记录。
- Patch – 更新数据源或合并记录。
- Defaults – 返回数据源的默认值。
返回记录的属性:
- Selected – 适用于库和列表框。 返回当前选择的记录。
- Updates – 适用于库。 同时提取用户在数据输入窗体中所做的全部更改。
- Update – 适用于文本输入控件和滑块等输入控件。 设置库的、要同时提取的各个属性。
记录范围
某些函数可针对表的所有记录单独计算一个公式。 可通过多种方式使用该公式的结果:
- Filter、Lookup – 公式确定是否应将该记录包含在输出中。
- Sort – 公式提供作为记录排序依据的值。
- Concat – 公式确定要串联在起来的字符串。
- ForAll – 公式可返回任何值,这可能会产生副作用。
- Distinct – 公式返回一个值,用于识别重复的记录。
- AddColumns – 公式提供所添加字段的值。
- Average、Max、Min、Sum、StdevP、VarP – 公式提供要聚合的值。
在这些公式中,可以引用所要处理的记录的字段。 其中的每个函数创建一个“记录范围”,将在该范围中计算公式,记录的字段可用作顶级标识符。 也可以引用整个应用中的控件属性和其他值。
在这些公式中,可以引用所要处理的记录的字段。 其中的每个函数创建一个“记录范围”,将在该范围中计算公式,记录的字段可用作顶级标识符。 也可以引用整个应用中的控件属性和其他值。
例如,以 Products 表为例:
若要确定其中任何产品的请求数是否大于可供数,可使用以下公式:
Filter( Products, 'Quantity Requested' > 'Quantity Available' )
Filter 的第一个参数是要处理的记录表,第二个参数是公式。 Filter 将创建一个记录范围用于计算此公式(其中提供了每个记录的字段,在本例中为 Product、Quantity Requested 和 Quantity Available)。 比较结果确定是否应在函数的结果中包含每条记录:
作为此示例的延伸,我们可以计算要订购的每种产品的数量:
AddColumns( Filter( Products, 'Quantity Requested' > 'Quantity Available' ), "Quantity To Order", 'Quantity Requested' - 'Quantity Available' )
此处,我们将在结果中添加一个计算列。 AddColumns 具有自身的记录范围,它使用该范围来计算请求数量与可供数量之差。
最后,我们可以缩减结果表,以便只显示所需的列:
ShowColumns( AddColumns( Filter( Products, 'Quantity Requested' > 'Quantity Available' ), "Quantity To Order", 'Quantity Requested' - 'Quantity Available' ), "Product", "Quantity To Order" )
请注意,在上面的公式中,有些位置使用了双引号 ("),有些位置使用了单引号 (')。
引用名称中包含空格的对象(例如字段或表)的值时,需要使用单引号。 不是引用对象的值而是讨论该对象时,需要使用双引号,尤其是该对象尚不存在的情况下
(例如 AddColumns)。