重要
对 Microsoft InfoPath 2013 的支持已于 2026 年 7 月 14 日结束。 建议将现有的 InfoPath 表单和工作流迁移到受支持的 Microsoft 365 解决方案。 了解有关 InfoPath 停用的详细信息。
与使用基本的预定义规则相比,公式可以更充分地利用创建的规则。 例如,公式用于计算当前或未来日期甚至连接文本等操作。
本文内容
概述
公式是一种 XPath (XML 路径语言) 表达式,由值、字段或组、函数以及用于计算和显示其他值的运算符组成。 可以使用公式为字段创建新值,并在绑定到该字段的控件中显示该值。 公式可按如下方式使用:
基于设计模板时指定的值或用户在填写表单模板时输入的值计算数学值。
根据使用公式计算的值运行规则。
函数是根据计算结果返回值的表达式。 函数中使用的值称为参数。 除了一些特定于 InfoPath 的函数外,您还可以使用 InfoPath 中包含的标准 XPath 1.0 函数。 功能由以下三个部分组成:
- 名称 函数的名称通常提供有关函数将执行的操作的提示。
- 返回值 函数的结果。
- 参数 函数用于执行计算的值。
函数可能需要参数才能返回值。 如果函数需要参数,则需要知道需要的参数数以及每个参数的数据类型。 如果提供的必需参数的数量或类型错误,该函数将不起作用。
下图显示了函数、表达式和公式之间的关系。
添加计算值控件
可以使用计算值控件显示只读文本,在窗体上显示另一个控件的值,以及创建基于 XPath 表达式的公式。 例如,如果您要开发支出跟踪表单模板,则可以添加计算值控件来显示已输入的支出总额。
注意
计算值控件仅显示数据而不存储数据,因此,只有当您不想保存计算值或在其他公式中引用它时,才应使用计算值控件。
在表单模板中,将光标置于要插入控件的位置。
在 “开始 ”选项卡的 “控件 ”组中,单击 计算值 控件。
在“ 插入计算值 ”对话框中,执行下列操作之一:
若要直接在计算值控件中键入文本或 XPath 表达式,请在 XPath 框中键入。
要插入公式,请单击 编辑公式
,然后在 公式 文本框,根据需要使用以下内容:- 若要在公式中插入字段或组,请单击 “插入字段或组”,在 “选择字段或组” 对话框中单击该字段或组,然后单击“ 确定”。
- 若要在公式中插入函数,请单击 “插入函数”,在“ 插入函数 ”对话框中选择该函数,然后单击“ 确定”。
如果函数需要参数,请在“ 插入函数 ”对话框中选择函数,单击“ 确定”,然后在 “公式 ”文本中,双击指示的位置并选择所需的参数,然后再单击 “确定”。 - 若要在公式中插入数值或数学运算符,请在“ 公式 ”框中键入数学运算的值或符号。
数学运算符包括加法 (+) 、减法 (-) 、乘法 (*) 和除 (/) 。
数学公式通常依赖整数或十进制值作为参数。 若要避免公式中出现空值,请在“ 文件 ”选项卡上,单击“ 窗体选项” ,然后选择“ 高级 ”,并确保选中“ 将空白值视为零” 。
向控件添加公式
虽然可以使用计算值控件来显示公式的结果,但并不限于使用计算值控件。 还可以使用公式设置其他控件(如文本框)的默认值。 可通过两种方式设置控件的默认值。 您可以使用静态默认值(只需在“字段”或“组属性”对话框的“值”字段中输入所需值),也可以使用公式根据窗体中的其他值设置字段的默认值。 执行下列操作以根据公式设置字段的默认值:
选择要向其添加公式的控件,然后在 “控件工具”下的“ 属性 ”选项卡的“ 属性 ”组中,单击“ 默认值”。
单击“值”框旁边的“插入公式
”。在“ 公式 ”文本框中输入所需的公式,根据需要使用以下内容:
若要在公式中插入字段或组,请单击 “插入字段或组”,在 “选择字段或组” 对话框中单击该字段或组,然后单击“ 确定”。
若要在公式中插入函数,请单击 “插入函数”,在“ 插入函数 ”对话框中选择该函数,然后单击“ 确定”。
如果函数需要参数,请在“ 插入函数 ”对话框中选择函数,单击“ 确定”,然后在 “公式 ”文本中,双击指示的位置并选择所需的参数,然后再单击 “确定”。若要在公式中插入数值或数学运算符,请在“ 公式 ”框中键入数学运算的值或符号。
数学运算符包括加法 (+) 、减法 (-) 、乘法 (*) 和除 (/) 。提示
数学公式通常依赖整数或十进制值作为参数。 若要避免公式中出现空值,请在“ 文件 ”选项卡上单击“ 窗体选项”,然后选择“ 高级”。 确保已选中“将 空白值视为零” 。
若要将公式编辑为 XPath 公式,请选择“编辑 XPath (高级) 检查”框,这会将公式更改为公式的 XPath 表达式版本。
若要检查公式的语法是否正确,请单击“验证公式”按钮。 如果您的公式包含错误:
单击“Microsoft InfoPath”对话框中的“显示详细信息”以查看公式中的错误。 以下是解决这些错误的一些建议:
- 如果在公式中使用函数,请验证是否为函数使用了正确的参数。 有些函数需要字段或组,而其他函数需要指定的值作为参数。
- 如有必要,请删除并重新键入公式,以确保正确键入。
- 单击“确定”。
- 如果要在字段所基于的值更改时更新字段的默认值,请选中“重新计算公式时刷新值”检查框。 如果执行此操作,请单击“ 确定”,然后在 “控件工具”下的 “属性” 选项卡的“ 属性 ”组中,单击 控件属性。 单击“显示”选项卡,然后选中“只读”检查框。
在规则中使用公式
在 验证、 格式设置或 操作 规则中指定条件时,可以使用公式来控制条件。 将规则分配给控件或窗体模板时,从“条件”对话框的第三个下拉列表中选择“使用公式”即可执行此操作。
日期和时间函数
addDays
向日期或日期和时间添加天数。
语法
addDays (date, days)
| 参数 | 说明 |
|---|---|
| date | 第二个参数中的天数将添加到此参数中的日期。 此参数可以是日期 (日期) 或日期和时间 (日期时间) 数据类型。 |
| 为 0 | 要在第一个参数中添加到日期的天数。 此参数必须是整数 (整数) 数据类型。 如果在此参数中使用负数,则返回值将是较早的日期。 |
示例
你希望表单模板中的字段包含距今天日期 60 天的日期。 表单模板包含名为 fldToday 的字段,其中今天的日期为默认值。 若要使用此函数计算新日期,请在新日期字段中使用以下公式:
addDays (fldToday, 60)
addSeconds
为时间或日期和时间添加秒数。
语法
addSeconds (time, seconds)
| 参数 | 说明 |
|---|---|
| time | 日期和时间值或时间值,它要么是对表单模板中另一个字段的引用,要么是日期或时间函数的结果,例如“现在 () ”或“今天 () ”。 第二个参数中的秒数将添加到此参数中的时间中。 此参数可以是日期 (日期) 或日期和时间 (日期时间) 数据类型。 如果是“时间”数据类型,则将返回“时间”数据类型。 如果是“日期”数据类型,则将返回“日期和时间”数据类型。 |
| seconds | 要添加到第一个参数中的日期和时间值或时间值的秒数。 此参数中的字段必须为整数 (整数) 数据类型。 如果在此参数中使用负数,则返回值将是较早的日期和时间或较早的时间。 |
示例
表单模板包含一个名为 fldCurrentTime 的字段,该字段使用当前时间作为默认值,第二个字段使用公式中的 addSeconds 函数来显示距当前时间 120 秒的时间。 若要使用此函数计算新时间值,请在第二个字段中输入以下公式:
addSeconds (fldCurrentTime, 120)
资源
返回当前系统日期和时间。
如果只想返回当前日期,请使用 today 函数。
语法
now ()
此函数不使用参数。
示例
若要获取基于表单模板的窗体的创建日期和时间,请在字段中使用以下公式:
now ()
今天
返回当前系统日期。 对于 SharePoint 列表日期字段,请使用 now () 函数。
如果希望同时返回日期和时间,请使用 now 函数。
语法
today ()
此函数不使用参数。
示例
若要获取基于表单模板的表单创建日期,请在字段中使用以下公式:
today ()
字段函数
Count
计算字段或组的实例数。
语法
字段) (计数
| 参数 | 说明 |
|---|---|
| 字段 | 要在窗体中计数的重复字段或重复组的名称。 |
示例
您正在设计一个表单模板,供应商将使用其表单来报告其产品和库存。 表单模板包含一个名为 grpProduct 的重复组,用于表示供应商提交的产品。 每个组都包含有关产品及其库存水平的信息。 当供应商在基于此表单模板的表单中添加产品时,InfoPath 将创建重复组的新实例。
表单模板在数据源中有一个字段,其中包含供应商提交的产品数量。 要自动计算供应商提交的产品数量,即重复组 grpProduct 的实例数,请在产品数量字段中使用以下公式:
count (grpProduct)
姓氏
返回重复字段或组的最后一次出现。
注意
如果要设计与浏览器兼容的表单模板,则此函数不会显示在“插入函数”对话框的“函数”列表中。
语法
field_name[上次 () ]
尽管函数本身没有任何必需参数,但您可以将此函数用作指定字段名称的谓词。
示例
您正在设计一个表单模板,供应商将填写该模板以报告其产品库存。 表单模板与 Web 服务的数据连接,Web 服务的方法用于检查供应商的所有产品的产品信息是否已完成。 该方法需要供应商提交的产品列表中的最后一个产品。
产品信息存储在名为 grpProduct 的重复组的不同字段中。 当供应商将产品添加到表单时,InfoPath 会添加一个名为 grpProduct 的新重复组。 如果供应商报告多个产品,则窗体的数据源将包含 grpProduct 重复组的多个实例。
为了确保向 Web 服务提交正确的信息,请添加一个字段,该字段将包含有关供应商的产品组中的最后一个产品的信息。 若要将该字段配置为自动检索最后一个产品,请使用以下公式作为最后一个产品字段的默认值:
grpProduct[上 () ]
local-name
返回字段或组的本地名称。
注意
- 如果参数是重复字段或重复组,则该函数返回第一个重复字段或重复组的值。
- 当用户填写 Web 浏览器表单时,使用此函数的公式会将窗体数据发送到服务器,以获取此函数的返回值。
语法
local-name (字段)
| 参数 | 说明 |
|---|---|
| 字段 | 要返回其本地名称属性的字段名称。 |
示例
您正在设计一个用于许可证申请的表单模板。 表单模板与 Web 服务中的方法有数据连接。 此方法需要承包商许可证号字段的 local-name 属性的值。 许可证编号字段的名称是 fldLicenseNumber。
您有一个字段将包含本地名称属性的值。 若要自动检索许可证编号字段的本地名称属性的值,请使用以下公式作为将包含本地名称属性值的字段的默认值:
local-name (fldLicenseNumber)
名称
返回字段或组的名称和命名空间前缀。
注意
- 如果参数是重复字段或重复组,则该函数将返回窗体中第一个重复字段或重复组的名称和前缀。
- 当用户基于启用浏览器的表单模板填写表单时,使用此函数的公式会将窗体数据发送到服务器以获取此函数的返回值。
语法
名称 (字段)
| 参数 | 说明 |
|---|---|
| 字段 | 要返回其命名空间前缀和名称的字段的名称。 |
示例
您正在设计一个用于许可证申请的表单模板。 表单模板与 Web 服务中的方法有数据连接。 此方法需要承包商许可证号字段的 name 属性。 许可证编号字段的名称是 fldLicenseNumber。
您有一个字段将包含 name 属性的值。 要自动检索 name 属性的值,请使用以下公式作为字段的默认值:
name (fldLicenseNumber)
namespace-uri
返回字段或组的完整命名空间。
注意
- 如果参数是一组字段或组,则该函数返回窗体中第一个字段或组的命名空间。
- 当用户填写 Web 浏览器表单时,使用此函数的公式会将窗体数据发送到服务器,以获取此函数的返回值。
语法
namespace-uri (字段)
| 参数 | 说明 |
|---|---|
| 字段 | 要检索其命名空间 URI 的字段的名称。 |
示例
您正在设计一个用于许可证申请的表单模板。 表单模板将数据提交到 Web 服务。 若要基于表单模板处理窗体中的数据,Web 服务需要来自数据源中特定元素字段的命名空间 URI。 表单模板中包含命名空间 URI 数据的字段名为 fldComplete。
您有一个字段将包含元素字段的命名空间 URI。 要自动检索命名空间 URI,请使用以下公式作为将包含命名空间 URI 的字段的默认值:
namespace-uri (fldComplete)
位置
返回字段或组相对于同一父组中的其他字段或组的索引 (或位置) 。
注意
此函数在 Web 浏览器表单模板中不可用。
语法
position ()
示例
您正在设计一个表单模板,供应商将填写该模板以报告其产品库存。 产品信息存储在重复组中的字段中。 重复组绑定到重复表,该表允许供应商添加新产品信息或修改现有产品信息。
在重复表的第一列中,需要在文本框中显示行号。 若要在供应商将新产品添加到重复表时自动显示行号,请使用以下公式作为文本框的默认值:
position ()
数学函数
包含数学函数的公式通常需要整数或十进制值的参数。 若要确保参数是整数或十进制值而不是 null 值,请单击“文件>窗体选项”“>高级”,然后确保选中“将空白值视为零”检查框。
AVG
计算重复组中字段中数值的平均值。
注意
重复字段必须是数值数据类型,并包含在组中。
语法
Avg (field)
| 参数 | 说明 |
|---|---|
| 字段 | 要计算其平均值的组中重复字段的名称。 |
示例
您正在设计一个表单模板,供应商将使用其表单来报告其产品和库存。 窗体模板包含一个名为 fldPrice 的重复字段,该字段位于包含供应商销售的每个产品的相关数据的重复组中。 该组绑定到重复表控件。
表单模板中有一个字段,该字段将包含该供应商销售的所有产品的平均价格。 若要计算平均价格,请在平均价格字段中使用以下公式:
avg (fldPrice)
boolean
如果字段或组存在,则返回 true。 否则返回 false。
即使已删除与字段关联的控件,但字段仍然存在,这也会返回 true。
语法
布尔值 (字段)
| 参数 | 说明 |
|---|---|
| 字段 | 此函数要检查的重复字段或重复组。 |
示例
您正在设计一个表单模板,供应商将使用它来报告其产品库存。 产品信息存储在名为 grpProduct 的重复组中的不同字段中。 每个重复组都包含包含有关每个产品的信息的字段。 如果供应商提供了有关七种产品的信息,则表单将包含七个重复组。
重复组绑定到重复表控件,使供应商能够添加新产品信息或修改现有产品信息。 供应商可以在重复表中添加或删除行。
如果用户删除重复表中的所有行,则需要显示对话框。 如果重复表控件至少有一行,则应添加包含单词“true”的字段,如果重复表控件没有任何行,则添加包含单词“false”的字段。
在重复表控件中配置规则,以便在该字段中的值为 false 时显示对话框。 若要自动确定重复表是否至少包含一行,请使用以下公式作为包含单词“true”或“false”的字段的默认值:
boolean (grpProduct)
ceiling
将数字向上舍入到最接近的整数。
语法
上限 (数字)
| 参数 | 说明 |
|---|---|
| number | 具有数值的字段的名称。 |
示例
你正在为公司设计费用报表表单模板。 支出将提交到具有仅接受整数的参数的 Web 服务。 提交到此参数的费用金额必须四舍五入到较高的整数值。 费用金额存储在名为 fldExpenseAmount 的字段中,整数值存储在另一个字段中。 若要计算更高的整数值,请使用以下公式作为其他字段的默认值:
上限 (fldExpenseAmount)
如果用户基于表单模板创建表单,并在 fldExpenseAmount 字段中输入 145.87,则包含该公式的字段中的值将为 146。
评估
返回字段或组的值。 第二个参数定义要为字段或组计算的表达式。 通常,eval 函数嵌套在对字段或组(如 sum 或 avg)进行操作的函数中。
语法
评估 (字段、表达式)
| 参数 | 说明 |
|---|---|
| 字段 | 字段或组的名称,其值将由第二个参数中的表达式计算。 |
| 表达式 | 将应用于第一个参数的表达式。 表达式可以是 XPath 函数,也可以是用双引号 (“ ”) 括起来的表达式。 |
示例
你正在为公司设计费用报表表单模板。 表单模板包含一个名为 fldTotal 的字段,其中包含费用金额。 fldTotal 字段是名为 grpExpenses 的重复组的一部分。 另一个字段绑定到包含所有支出总和的文本框。 若要在用户输入支出金额时显示所有支出的总和,请在总支出字段中使用以下公式:
eval (grpExpenses,sum (fldTotal) )
false
返回 false。
语法
false ()
此函数不使用参数。
示例
您正在设计一个表格模板,承包商将使用其表格来申请建筑许可证。 表单模板分为两个部分:一部分用于联系信息,另一部分用于与建筑许可证相关的信息。 填写此表格时,承包商需要先填写联系信息部分,然后才能填写建筑许可证部分。
为此,您可以创建一个规则,以便在“联系人信息”部分中的任何一个字段为空时将布尔字段的值设置为 false。 布尔值字段可以有布尔 true 值或布尔 false 值。 您还可以配置条件格式,以便在布尔字段值为 false 时隐藏包含建筑许可证信息的分区控件。
要隐藏包含建筑许可证信息字段的分区控件,请配置一个规则,以便在联系信息部分中的任何一个字段为空时在布尔字段中运行此函数。
车间
将数字向下舍入到最接近的整数。
语法
楼层 (号)
| 参数 | 说明 |
|---|---|
| number | 具有数值的字段的名称。 |
示例
你正在为公司设计费用报表表单模板。 支出将提交到使用仅接受整数的参数的 Web 服务。 提交到此参数的费用金额必须四舍五入到较低的整数值。 费用金额存储在名为 fldExpenseAmount 的字段中,整数值存储在另一个字段中。 要计算较低整数值,请使用以下公式作为其他字段的默认值:
floor (fldExpenseAmount)
max
返回字段或组中的最大数。
语法
最大 (字段)
| 参数 | 说明 |
|---|---|
| 字段 | 要查找其最高值的组中的重复字段或重复组中的字段。 |
示例
您正在设计一个表单模板,供应商将使用其表单报告其产品库存。 表单模板包含一个重复组,该组包括多个字段,其中包含有关供应商产品的数据。 重复组中名为 fldPrice 的字段包含产品的价格。
窗体模板数据源中的另一个字段将包含该供应商销售的所有产品的最高价格。 要返回最高价格,请在最高价格字段中使用以下公式:
max (fldPrice)
min
返回字段或组中的最小数字。
语法
最小 (字段)
| 参数 | 说明 |
|---|---|
| 字段 | 要查找其最高值的组中的重复字段或重复组中的字段。 |
示例
您正在设计一个表单模板,供应商将使用其表单报告其产品库存。 表单模板包含一个重复组,该组包括多个字段,其中包含有关供应商产品的数据。 重复组中名为 fldPrice 的字段包含产品的价格。
窗体模板数据源中的另一个字段将包含该供应商销售的所有产品的最低价格。 若要返回最低价格,请在最低价格字段中使用以下公式:
min (fldPrice)
不执行
如果布尔值为 false 或 null,则返回 true。 如果布尔值为 true 或不为 null,则返回 false。
语法
不 (boolean_value)
| 参数 | 说明 |
|---|---|
| boolean_value | 具有布尔数据类型的字段。 |
示例
您正在设计一个表格模板,承包商将使用其表格来申请建筑许可证。 表单模板有一个部分用于联系信息,另一个部分用于与建筑许可证相关的信息。 填写此表格时,承包商需要先填写联系信息部分,然后才能填写建筑许可证部分。
为此,可以创建一个规则,如果联系人信息部分中的任何一个字段留空,则该规则会将布尔字段的值设置为 false。 布尔值字段可以有布尔值 true 或布尔值 false。 然后,如果布尔字段值为 false,则使用相同的公式隐藏包含建筑许可证信息的分区控件。 若要设置此规则,请使用以下公式将布尔字段设置为 false:
不 (true () )
number
将值转换为数字。
如果参数中的值无法转换为数字,则该函数返回 NaN。
语法
数字 (值)
ArgumentDescription
value具有要转换为数字的值的字段。
示例
您正在设计一个表格模板,承包商将使用其表格来申请建筑许可证。 表单模板包含一个部分,承包商可以在其中输入他的公司地址。 要验证承包商是否输入有效地址,请使用与可验证该地址的 Web 服务的数据连接。 如果地址经过验证,承包商可以将表单提交到 SQL 数据库。 SQL 数据库对地址号和街道名称都使用文本字段。 Web 服务要求地址号为数字数据类型,街道名称为文本数据类型。
若要将数据同时提交到 Web 服务和 SQL 数据库,需要将地址存储为两种不同的数据类型:
- 若要将地址提交到 Web 服务,地址编号必须是数字数据类型,街道名称必须是文本数据类型。
- 若要将地址提交到 SQL 数据库,地址编号和街道名称必须是文本数据类型。
您还希望承包商只输入一次他的地址。 为了将地址转换为正确的数据类型并帮助确保承包商只输入一次地址,表单模板包含一个名为 fldAddressNumber 的字段用于输入地址编号和另一个用于输入街道名称的字段。 这两个字段都配置为文本数据类型。
为了将地址编号提交到 Web 服务,需要将 fldAddressNumber 字段中 (存储为文本数据类型) 的数据转换为数字数据类型。 转换为数值数据类型的地址号的值将存储在配置为存储数值数据类型的另一个字段中。
若要将地址编号从文本数据类型转换为数值数据类型,请使用以下公式作为 fldAddressNumber 字段的默认值:
number (fldAddressNumber)
nz
返回将所有空白字段替换为零 (0) 的字段或组。
语法
NZ (字段)
| 参数 | 说明 |
|---|---|
| 字段 | 要检查值的字段。 |
示例
您正在设计一个表单模板,供应商将填写该模板以报告其产品库存。 供应商将通过基于表单模板的表单将其产品库存提交到 Web 服务。 Web 服务的方法要求所有包含数值数据的元素都具有数值。 Web 服务拒绝包含空数值元素的表单。
表单模板包含一个名为 fldAvailability 的字段,其中包含与供应商提供此产品的能力相对应的数字。 供应商可以在此字段中输入数字。 为了帮助确保供应商可以将其基于你的表单模板的窗体提交到 Web 服务,并在供应商未输入数字时自动将该字段的值设置为零,请使用以下公式作为此字段的默认值:
nz (fldAvailability)
台
将数字舍入到最近的整数。
如果非整数值正好处于两个舍入整数值的中间位置,则返回值是下一个最大的整数值。
语法
对数字) 进行舍入 (
| 参数 | 说明 |
|---|---|
| number | 包含将使用此公式舍入的数字的字段。 |
示例
您正在设计一个表单模板,供应商将使用其表单报告其产品库存。 表单模板包含一个重复组,该组包括多个字段,其中包含有关供应商产品的数据。 重复组中名为 fldPrice 的字段之一包含产品的价格。
表单模板具有到 Web 服务的提交数据连接。 Web 服务方法要求每个价格四舍五入为整数值。 若要将相应值发送到 Web 服务方法,请向数据源添加重复字段。 此字段使用以下公式将 fldPrice 字段中的价格四舍五入为整数值:
round (fldPrice)
和
返回字段或组中所有字段的总和。 首先将每个字段转换为一个数字值。
语法
字段) (求和
| 参数 | 说明 |
|---|---|
| 字段 | 重复组中的字段或将添加其值的组中的重复字段的名称。 要添加来自两个不同组的字段,请使用联合运算符 (|) 分隔参数。 例如:sum ( field name 1 |字段名称 2) . |
示例
你正在设计支出报表表单模板。 表单模板包含一个包含支出项目的组。 每个项目的金额存储在名为 fldExpenseAmount 的字段中。 该组绑定到一个重复表,该表将每个支出项目显示为一行。 表单模板包含显示总支出的文本框控件。 若要显示总支出,文本框控件包含以下公式:
sum (fldExpenseAmount)
true
返回 true。
语法
true()
此函数不使用参数。
示例
您正在设计一个表格模板,承包商将使用其表格来申请建筑许可证。 表格模板包含一部分用于联系信息,另一部分用于与建筑许可证相关的信息。 填写此表格时,承包商需要先填写联系信息部分,然后才能填写建筑许可证部分。
为此,可以创建一个规则,如果联系人信息部分中的所有字段都包含数据,则将布尔字段的值设置为 true。 布尔值字段可以具有布尔值 true 或 false。 如果布尔字段值为 true,则显示包含建筑许可证信息的分区控件。
若要显示包含建筑许可证信息的部分控件,如果联系人信息部分中的所有字段都包含数据,则可以配置规则以在布尔字段中运行此函数。
文本函数
concat
将两个或多个文本字符串字段合并为一个文本字符串。
语法
concat (text1, text2, ...)
| 参数 | 说明 |
|---|---|
| text1 | 包含要组合成一行文本的文本的字段,其文本位于 argument2 中。 |
| text2, ... | Ore 或多个包含要与上一个字段组合的文本的其他字段。 文本字段之间用逗号分隔。 |
示例
你正在设计一个表单模板,该模板包含一个名为 fldFirstName 的字段和一个名为 fldLastName 的字段。 将以下公式添加到第三个字段,使其包含文本“此表单已由 <firstname><lastname> 填写。”:
concat (“此表单已由 ”, fldFirstName, “ ”, fldLastName, “.” 填写。)
注意
任何作为文本参数输入的实际文本(包括空格或标点符号)都需要在引号 (“) 中插入。
包含
如果第一个字段或文本字符串包含第二个字段或文本字符串,则返回 true。 否则返回 false。
语法
包含 (within_text、find_text)
| 参数 | 说明 |
|---|---|
| within_text | 包含要搜索文本的字段。 |
| find_text | 包含用双引号括起来的文本或文本的字段 (“ ”) 在第一个参数中搜索。 |
示例
你正在设计一个包含三个文本字段的表单模板。 第一个将允许用户在第一个名为 fldText 的文本控件中输入大量文本。 第二个将允许用户输入一小段文本,名为 fldFindText。 第三个文本框将第二个文本框与第一个文本框进行比较,并指示是否在第一个字段中找到第二个字段中的值并显示结果。 它将以下公式作为默认值:
包含 (fldText,fldFindText)
normalize-space
删除文本字符串中的空格。
注意
这将删除文本数据类型的字段中的所有前导、尾随和重复空格。
语法
规范化空间 (文本)
| 参数 | 说明 |
|---|---|
| text | 包含要删除的前导、尾随或重复空白的文本。 请为文本加上双引号 (“ ”) 。 |
示例
设计一个表单模板,其中包含绑定到文本框控件) 的名为 fldText (的字段。 要规范化第一个字段中输入的任何文本,并显示第一个字段中的值而不带有任何多余空格,请添加第二个字段,并将以下公式作为默认值:
normalize-space (fldText)
starts-with
如果第一个字段或文本字符串以第二个字段或字符串开头,则返回 true。 否则,返回 false。
语法
开始为 (文本、start_text)
| 参数 | 说明 |
|---|---|
| text | 包含要搜索的文本的字段的名称。 参数之间用逗号分隔。 |
| start_text | 要在第一个参数中指定的字段的开头搜索的文本。 此参数可以是用双引号 (“ ”) 括起来的字段或文本。 |
示例
你正在设计一个包含三个文本字段的表单模板。 第一个将允许用户在第一个名为 fldText 的文本控件中输入大量文本。 第二个将允许用户输入一小段文本,名为 fldFindText。 第三个文本框将第二个文本框与第一个文本框进行比较,并指示第一个字段中的值是否以第二个字段中的值开始并显示结果。 它将以下公式作为默认值:
starts-with (fldText、fldFindText)
字符串
将值转换为文本字符串。
语法
字符串 (值)
| 参数 | 描述 |
|---|---|
| value | 包含要转换为文本的值的字段。 |
示例
您正在设计一个表格模板,承包商将使用其表格来申请建筑许可证。 表单模板包含一个部分,承包商可以在其中输入他的公司地址。 为验证承包商是否输入有效地址,表单模板必须与可验证该地址的 Web 服务建立数据连接。 如果地址经过验证,承包商可以将表单提交到 SQL 数据库。 SQL 数据库使用文本字段作为街道地址。 Web 服务要求地址号为数字数据类型,街道名称为文本数据类型。
若要将数据同时提交到 Web 服务和 SQL 数据库,需要将地址存储在两种不同的数据类型中:
- 若要将地址提交到 Web 服务,地址编号必须是数字数据类型。
- 若要将地址提交到 SQL 数据库,地址编号和街道名称必须是文本数据类型。
您还希望承包商只输入一次他的地址。 为了将地址转换为正确的数据类型并帮助确保承包商只输入一次他的地址,该表单包含一个用于输入地址编号的字段(名为 fldAddressNumber)和另一个用于输入街道名称的字段。 fldAddressNumber 字段为数值数据类型,街道名称字段为文本数据类型。
若要将完整的地址 (地址号和街道名称) 提交到 SQL 数据库,需要将 fldAddressNumber 字段和街道名称字段中的值合并为一个文本数据类型的值。 首先需要将 fldAddressNumber 字段中的数值数据(将数据存储为数值数据类型)转换为文本数据类型。 您可以向数据源添加一个字段,该字段将完整地址作为文本数据类型包含在内。
若要将 fldAddressNumber 字段中的文本数据转换为文本数据类型以便使用 Web 服务,请配置另一个字段,该字段将地址编号作为文本数据类型包含在内。 若要将地址编号从数字数据类型转换为文本数据类型,请使用以下公式作为此字段的默认值:
string (fldAddressNumber)
string-length
返回文本字符串中的字符个数。
语法
string-length (text)
| 参数 | 说明 |
|---|---|
| text | 值为要计数文本的字段。 |
示例
你正在设计一个表单模板,该模板包含名为 fldText 的字段,该字段绑定到文本框控件。 表单模板包含第二个字段,用于计算第一个表单中输入的字符数。 为此,第二个字段会包含以下公式作为默认值:
字符串长度 (fldText)
substring
返回文本字符串的特定部分。 第二个参数指定起始位置,第三个参数指定要包含的字符数。
语法
文本、start_position char_count) (子字符串
| 参数 | 说明 |
|---|---|
| text | 具有文本数据类型或文本的字段(用双引号 (“ ”) 括起来。 此函数搜索此文本,并返回从第二个参数中指定的位置到第三个参数中指定的字符数或到文本末尾(以先发生者为准)的所有字符。 |
| start_position | 要从第一个参数检索的文本的起始位置。 此参数必须是整数或对配置为存储整数 (整数) 数据类型的字段的引用。 |
| char_count | 要检索的字符的数量,从第二个参数中指定的起始位置开始。 此参数必须是整数或对配置为存储整数 (整数) 数据类型的字段的引用。 |
示例
你正在设计包含以下字段和控件的表单模板:
- 绑定到文本框控件的名为 fldText 的字段。 此字段包含函数搜索的文本。
- 绑定到文本框控件的名为 fldStartingPosition 的字段。 此字段配置为整数数据类型。 该字段包含函数的起始位置。
- 绑定到文本框控件的名为 fldNumberOfCharacters 的字段。 此字段配置为整数数据类型。 该字段包含函数返回的字符数。
- 显示函数结果的文本框控件。 文本框控件包含以下公式:
fldText、fldStartingPosition、fldNumberOfCharacters) (子字符串
如果用户输入“此表单是从 InfoPath 表单模板创建的。” 在第一个文本框中,第二个文本框是 4,第三个文本框是 16,然后第四个文本框将包含“S Form was Creat”。
substring-after
返回第二个文本字符串第一次出现之后的第一个文本字符串中的文本。
语法
在 (文本之后的 substring,find_text)
| 参数 | 说明 |
|---|---|
| text | 具有文本数据类型或文本的字段(用双引号 (“ ”) 括起来。 此函数搜索此参数中的文本,然后返回第二个参数中文本后面的所有字符。 |
| find_text | 要在第一个参数的文本中搜索的文本。 文本可以是具有文本数据类型的字段中的值,也可以是括在双引号 (“ ”) 中的文本。 此函数在第一个参数中的文本中搜索此文本,然后返回此参数中文本后面的所有字符。 |
示例
你正在设计包含以下字段和控件的表单模板:
- 绑定到文本框控件的名为 fldText 的字段。 此字段包含函数搜索的文本。
- 绑定到文本框控件的名为 fldSubstringText 的字段。 此字段包含作为函数的第二个参数的文本。
- 显示函数结果的文本框控件。 文本框控件包含以下公式:
后面的子字符串 (fldText、fldSubstringText)
如果用户输入“此表单是从 InfoPath 表单模板创建的。” 在 fldText 字段中,在第二个文本框控件中输入“InfoPath”,则第三个文本框控件将包含“表单模板”。
substring-before
返回第一个文本字符串中在第二个文本字符串第一次出现之前的文本。
语法
在 (文本之前的 substring,find_text)
| 参数 | 说明 |
|---|---|
| text | 具有文本数据类型或文本的字段(用双引号 (“ ”) 括起来。 此函数搜索此参数中的文本,然后返回第二个参数 find_text 中文本之前的所有字符。 |
| find_text | 要在 text 参数中搜索的值。 此值可以是具有文本数据类型的字段中的值,也可以是括在双引号 (“ ”) 中的文本。 此函数在第一个参数 (文本) 中的文本中搜索此文本,然后返回此参数中文本之前的所有字符。 |
示例
你正在设计包含以下字段和控件的表单模板:
- 绑定到文本框控件的名为 fldText 的字段。 此字段包含函数搜索的文本。
- 绑定到文本框控件的名为 fldSubstringText 的字段。 此字段包含作为函数的第二个参数的文本。
- Aa 显示函数结果的文本框控件。 文本框控件包含以下公式:
substring-before (fldText、fldSubstringText)
如果用户输入“此表单是从 InfoPath 表单模板创建的。” 在 fldText 字段中,在第二个字段中“created”,则第三个文本框控件将包含“此表单是”。
翻译
返回第一个文本字符串,其中第二个文本字符串中的每个字符替换为第三个文本字符串中相应位置的字符。
语法
翻译 (文本、find_chars replace_chars)
| 参数 | 说明 |
|---|---|
| text | 包含将替换其字符的文本的字段名称。 参数之间用逗号分隔。 |
| find_chars | 具有文本数据类型的字段的字符或值,将替换为第三个参数中的字符。 参数之间用逗号分隔。 |
| replace_chars | 将替换第二个参数中字符的每个实例的文本数据类型的字段的字符或值。 |
示例
您正在设计一个表格模板,承包商将使用其表格来申请建筑许可证。 表单模板包含一个部分,承包商可以在其中输入他的公司地址。 该部分包含绑定到文本框控件的名为 fldStreetAddress 的字段,承包商可以在其中输入其街道地址。
要验证承包商是否输入有效的地址,您需要与可验证该地址的 Web 服务建立数据连接。 Web 服务需要地址中的小写字符。
要将街道地址中的任何大写字符转换为小写,请向数据源添加另一个字段以包含转换为小写字符的街道地址。 此字段的默认值包含以下公式:
翻译 (fldStreetAddress、ABCDEFGHIJKLMNOPQRSTUVWXYZ、abcdefghijklmnopqrstuvwxyz)
URL 函数
SharePointListUrl
返回仅) InfoPath 2010 (托管表单的 SharePoint 列表或表单库的地址。
语法
SharePointListUrl ()
此函数不使用参数。
示例
你正在为 SharePoint 列表设计表单模板,并希望添加指向列表托管位置的链接,例如“https://sharepointserver/site/list/”。 为此,请添加超链接控件并将其设置为 只读,然后将控件链接到的字段的默认值设置为以下内容:
SharePointListUrl ()
注意
如果表单模板未托管在 SharePoint 服务器上,SharePointListUrl () 函数将仅返回“https://sharepointserver/site/list/”。
SharePointServerRootUrl
返回仅) (InfoPath 2010 托管表单的 SharePoint 服务器的地址。
语法
SharePointServerRootUrl ()
此函数不使用参数。
示例
你正在为 SharePoint 列表设计表单模板,并希望添加指向托管该列表的 SharePoint 服务器根目录的链接,例如“https://sharepointserver/site/list/”。 为此,请添加超链接控件并将其设置为 只读,然后将控件链接到的字段的默认值设置为以下内容:
SharePointServerRootUrl ()
注意
如果表单模板未托管在 SharePoint 服务器上,SharePointListUrl () 函数将仅返回“https://sharepointserver/site/list/”。
SharePointCollectionUrl
返回仅) InfoPath 2010 (托管表单的 SharePoint 网站集的地址。
语法
SharePointCollectionUrl ()
此函数不使用参数。
示例
你正在为 SharePoint 列表设计表单模板,并希望添加指向托管该列表的 SharePoint 服务器的网站集的链接,例如“https://sharepointserver/sitecollection/”。 为此,请添加超链接控件并将其设置为 只读,然后将控件链接到的字段的默认值设置为以下内容:
SharePointCollectionUrl ()
注意
如果表单模板未托管在 SharePoint 服务器上,则 SharePointListUrl () 函数将仅返回“https://sharepointserver/sitecollection/”。
SharePointSiteUrl
返回仅) (InfoPath 2010 托管表单的 SharePoint 网站的地址。
语法
SharePointSiteUrl ()
此函数不使用参数。
示例
你正在为 SharePoint 列表设计表单模板,并希望添加指向托管该列表的 SharePoint 网站的链接,例如“https://sharepointserver/site/”。 为此,请添加超链接控件并将其设置为 只读,然后将控件链接到的字段的默认值设置为以下内容:
SharePointSiteUrl ()
注意
如果表单模板未托管在 SharePoint 服务器上,则 SharePointListUrl () 函数将仅返回“https://sharepointserver/site/”。
userName 函数
userName
返回填写 (InfoPath 2007 及更高版本) Microsoft表单的用户名。
注意
如果用户在 Web 浏览器中填写表单,则将从 Microsoft Windows SharePoint Services 3.0 或更高版本中检索用户名。
语法
userName ()
此函数不使用参数。
示例
你正在为公司设计费用报表表单模板。 您的信用卡公司以电子方式将员工的支出记录发送到您公司维护的数据库。 要检索员工的支出记录,数据库需要填写基于表单模板的表单的员工的用户名。
向表单模板的数据源添加一个字段以存储员工的用户名。 您还可以创建一个查询数据连接,该连接使用查询中此字段的值来检索支出。
要确保填写支出报告的员工使用正确的用户名,请将该字段绑定到文本框控件。 若要显示基于此表单模板创建窗体的用户的用户名,请使用以下公式作为绑定到文本框控件的字段的默认值:
userName ()