找出Infopath中两个日期字段之间的天数差异

时间:2017-03-17 14:13:08

标签: infopath infopath2010 infopath-2007 infopath-forms-services

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

常规减法不适用于日期字段。像DateField1 - DateField2。任何代码或无代码解决方案都非常受欢迎。

2 个答案:

答案 0 :(得分:0)

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

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

Calculating date differences in InfoPath using SharePoint Excel Services

InfoPath and Excel Services

我花了大约一个小时让它工作,因为我不得不做一些试验& “受信任位置”设置出错。

答案 1 :(得分: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. 从第2个日期中减去第一个日期编号,将其存储在第三列中。
  7. 注意:Excel文件使用公式" NETWORKDAYS"并包括工作日,工作日减去美国联邦假期以及工作日减去纽约证券交易所假期的栏目。现在,您可以使用其中一列获取两个日期之间的工作天数。如果您居住在美国境外,您可以在Excel中为其他假期添加一列,例如英国银行假日。