0

有人可以帮助我确定 InfoPath 表单中两个日期字段之间的天数差异。

通常的减法不适用于日期字段。像 DateField1 - DateField2。任何代码或无代码解决方案都受到高度赞赏。

4

2 回答 2

0

我利用一个单独的 SharePoint 列表来帮助计算 Infopath 中两个日期之间的天数。这样我就可以计算闰年,并且能够只计算工作日,而不是所有天。我每年用新数据更新此列表一次。

这是包含 2018-2020 年数据的列表的 Excel 文件源:https ://1drv.ms/x/s!ApLhBloaS1wVgsUOMRrRfbekFftY9Q

脚步:

  1. 将上述 Excel 文件的第一个工作表导入为 Sharepoint 中的新列表。
  2. 从您的 InfoPath 表单向此列表添加接收数据连接。
  3. 对于第一个日期,创建一个操作以将日期转换为 YYYYMMDD 格式的数字。假设日期存储为 DateTime,您可以使用以下公式: floor(number(translate(substring-before(../my:endDate, "T"), "-", "")))
  4. 在列表中查询第一个日期的数值。将此数字存储在表单的字段(列)中。(此字段不需要显示在您的表单中。)
  5. 对第二个日期重复步骤 3 和 4。
  6. 从第二个日期减去第一个日期数,将其存储在第三列中。

注意:Excel 文件使用公式“NETWORKDAYS”并包括工作日、工作日减去美国联邦假期和工作日减去纽约证券交易所假期的列。现在,您可以使用这些列之一获取两个日期之间的工作日数。如果您居住在美国境外,则可以在 Excel 中添加一列以用于其他假期,例如英国银行假期。

于 2018-05-31T17:25:30.587 回答
0

在 InfoPath 中有多种获取日期差异的方法,但它们非常复杂,需要编写规则并将日期解析为月/日/年。相反,我推荐使用 Excel Services 的其他地方描述的这种方法。因为 Excel 擅长计算,所以在 Excel 中编写计算并从 InfoPath 调用 Excel 文档(如果您有带有 Excel Services 的 SharePoint)是有意义的。

以下是关于如何设置 InfoPath 和 Excel Services 的 2 组说明。说明很长和/或受版权保护,因此我不能在此处包含它们,但总而言之,您将在 InfoPath 中设置新的数据连接以使用 Web 服务 (SOAP) 打开 Excel 文档并根据您的 InfoPath 日期字段设置日期字段和从 Excel 中检索计算值。

使用 SharePoint Excel Services 计算 InfoPath 中的日期差异

InfoPath 和 Excel 服务

我花了大约一个小时才让它工作,因为我必须对受信任的位置设置进行一些试验和错误。

于 2017-03-24T20:22:17.950 回答