在控件中加、减、乘和除值
应用对象
可以使用公式根据用户输入到其他控件中的数据计算控件的值,从而帮助用户根据表单模板填写表单。 计算可以包括加、减、乘和除值。 例如,如果你正在设计一个表单模板,电气承包商将使用该模板申请许可证,你可以向控件添加一个公式,该控件自动计算承包商必须支付的申请总价格,方法是将申请中的许可证数乘以每个许可证的价格。
本文内容
什么是公式?
公式是由用于计算和显示其他值的值、字段或组、函数和运算符组成的 XPath 表达式。 公式可用于执行以下任务:
- 根据在设计表单模板时指定的值或用户在根据表单模板填写表单时输入控件的值计算数学值。
- 显示特定的日期和时间。
- 显示用户在另一个控件中的一个控件中输入的值。
- 设置字段或控件的默认值。
- 根据使用公式计算的值运行规则。
公式中使用的每个 XPath 表达式都是计算结果为单个值的值、函数和运算符的组合。 一个公式可以包含多个表达式。 可以将公式视为由一个或多个短语组成的句子,每个短语表示公式中的一个表达式。
下图显示了公式和表达式之间的关系。
函数是基于计算结果返回值的表达式。 函数中使用的值称为参数。 可以使用 InfoPath 中包含的标准 XPath 1.0 函数,以及一些特定于 InfoPath 的函数。 在 “另请参阅 ”部分中查找有关 InfoPath 函数的详细信息的链接。
在公式中使用两个或多个运算符
当公式包含两个或多个数学运算符时,InfoPath 会根据运算符的优先级执行计算。 以下列表显示了操作的执行顺序:
- 括号内的计算
- 乘法和除法计算
- 加法和减法计算
如果公式包含两个具有相同优先级的运算符,则从左到右执行计算。
例如,假设你正在创建一个许可证申请表单模板,该模板具有一个文本框,显示应用程序中提交的所有许可证的总成本。 此公式所需的值来自窗体中的其他文本框。 显示总成本的文本框包含以下公式:
txtPermit1Qty * txtPermitCost1 + txtPermit2Qty * txtPermitCost2 /txtNumberOfPermits
此公式包括加法 (+) 、乘法 (*) 和除法 (/) 运算符。 根据运算符的优先级,乘法和除法计算在加法计算之前执行。 由于乘法运算符和除法运算符的优先级相同,因此乘法计算在除法运算符之前完成,因为乘法运算符位于除法运算符的左侧。 公式是按以下方式计算的:
- txtPermit1Qty 中的值乘以 txtPermitCost1 中的值。
- txtPermit2Qty 中的值乘以 txtPermitCost2 中的值,然后该结果除以 txtNumberOfPermits 中的值。
- 步骤 1 中的计算结果将添加到步骤 2 中的计算结果中。
若要控制计算顺序,请将要首先完成的计算括在括号中。 括号中的计算在括号外的计算之前执行。 将带括号的计算放在计算的左侧,不带括号。 嵌套括号中的计算是从内括号到外括号执行的。
例如,请考虑以下公式:
( (txtPermit1Qty * txtPermitCost1) + (txtPermit2Qty * txtPermitCost2) ) /txtNumberOfPermits
在此计算中,将 txtPermit1Qty 和 txtPermitCost1 中的值相乘得到的值添加到将 txtPermit2Qty 和 txtPermitCost2 中的值相乘后得出的值。 然后,该计算的总和除以 txtNumberOfPermits 中的值。
将数学公式插入控件
双击要为其创建公式的控件或字段。
单击“数据”选项卡。
单击“ 插入公式
”。若要在公式中插入值或数学运算符,请在“ 公式 ”框中键入数学运算的值或符号。
数学运算列表操作 象征 添加 + 减 - 乘 * 除 / 注意
如果公式使用除法 (/) 运算符,请确保除法运算符前后有一个空格。 如果除法运算符前后没有空格,InfoPath 可能会将“/”解释为 XPath 位置步骤的分隔符,而不是除法运算符。
提示
数学公式通常依赖于整数或十进制值作为参数。 若要避免公式中的空白值,请在“窗体选项”对话框中的“高级”类别中选择“将空白值视为零检查”框。
若要为正确的语法检查公式,请在“插入公式”对话框中单击“验证公式”。
我的公式包含错误
单击“Microsoft Office InfoPath”对话框中的“显示详细信息”以查看公式中的错误。 以下是解决这些错误的一些建议:- 如果在公式中使用函数,请验证是否为函数使用了正确的参数。 某些函数需要字段或组,而其他函数需要指定的值作为参数。 在“ 另请参阅” 部分中查找有关函数的详细信息的链接。
- 删除公式并重新键入公式,确保正确键入。
要测试所做的更改,请单击“常用”工具栏上的“预览”,或者按 Ctrl+Shift+B。