在Infopath Designer

时间:2015-05-04 22:08:40

标签: infopath infopath2010 date-arithmetic

我正在尝试进行计算,其中日期总是计算到一个月的30日,所以,我在文本框中使用此公式,

concat(substring(Calculated Cal. Due Date, 7, 1), "/30/", substring(Calculated Cal. Due Date, 1, 4))

然后我创建了一个日期选择框,并在其默认值中,我使其等于文本框,但是我收到验证错误,它在Date Picker框周围显示红色虚线。此外,在进行计算时,其格式正确为mm/dd/yyyy。即使格式一致,也会出现红色短划线,显示验证错误。我不确定我做错了什么。

我仍然在尝试一切,但无济于事(

1 个答案:

答案 0 :(得分:0)

说明

  1. 将规则添加到没有条件的DatePicker字段。
  2. Set a field's value操作添加到您的规则中。
  3. 选择DatePicker作为您要设置的字段(应该是默认值)
  4. 将以下公式设置为您要设置字段的值:

    concat(substring(string(.), 1, 4), "-", substring(string(.), 6, 2), "-28")
    
  5. 说明

    如果使用string(dateBox)将DatePicker框的值转换为字符串,则结果将采用以下格式:yyyy-mm-dd

    这不是DatePicker框中显示的内容,但它是底层字符串。知道这一点,你可以使用类似的方法来提取你想要的日期部分。

    我创建了一个DatePicker框,它使用规则来计算其值,这意味着每次更改日期时都会计算它。结果是,每次选择日期时,它都会自动碰到30日。

    注意:输入2015-02-30也会在日期框中导致验证错误,因为二月只有28天或29天。我上面输入的片段将在每个月的28日普遍解决问题。如果你真的想要允许每个月的第30个月但是 2月,那么更多的逻辑必须用于检测所选日期的月份,然后具有特殊情况。