InfoPath 2010表单中的自动增量

时间:2011-03-11 18:27:34

标签: infopath

我有一个表格,我将工作流附加到。表单有一个将自动生成的数字。例如,第一个数字将为1,下次打开表单时,数字应为2,依此类推。我遇到的问题是:在文本框属性下的默认值我有值为:count(mynumber QuoteNumber)+1。生成表单时,第一个且唯一的数字是2,数字从2开始,永不增加。有人可以帮助我解释或解释我可能做错了吗?谢谢。我没有使用视觉工作室。

2 个答案:

答案 0 :(得分:2)

Rachel:自InfoPath 2007以来,我一直在解决这个问题。以下是我的工作方式。 由于您说您正在附加工作流,我假设您正在使用SharePoint中的from。 1 - 在SharePoint中创建表单库

2 - 使用InfoPath设计表单。将表单发布到SP时,请确保至少提升您要自动加入的ID字段。 (我通常会在表单中推广每个字段,因为我喜欢像SP列表一样使用它们。)

3 - 在SP中,创建一个新表单并手动将ID字段设置为表单系列的起始编号。

4 - 返回InfoPath设计器并重新打开表单模板。

5 - 创建一个新数据源以从SP表单库接收数据,并将表单库指定为源,将ID字段指定为数据元素。将数据源命名为“ID Lookup”。

6 - 打开要在表单上自动加载的字段的属性,然后在默认值框中选择函数,然后选择MAX函数。

在函数后加“+1”以递增1。

现在,在该字段中双击Max函数。您将看到一个显示表单字段的对话框。请注意对话框顶部的下拉列表 - 在这里您可以选择数据源(在此示例中,我将其命名为“sales Contracts”)。如果选择在步骤5中创建的数据源,则会看到一个对话框,显示几个数据分支。

展开“dataFields”分支,直到看到要自动加入的字段。点击这个。 您的公式对话框将类似于:

max(ID_X0020)+ 1

使用您的字段名称而不是Max函数中的“ID” - 该函数现在将返回IN THE FORM LIBRARY中字段的最大值加上1.

将表单保存在InfoPath中并尝试预览它。您可能会收到安全警告 - 您的InfoPath表单正在动态地从SharePoint库中获取数据。甚至可能会要求您重新输入密码(我通常会这样做)。当在InfoPath预览中显示新的空白表单时,您应该看到填写的ID字段的值大于SP库的该字段中的数字。

使用此方法有一个巨大的Gothca - 如果用户重新打开已完成的表单进行编辑,公式可能会尝试替换ID号。如果您的用户在提交表单后没有对其进行编辑,那么这将对您有用。

希望这是有道理的。

答案 1 :(得分:1)

你没有做错任何事 - 你只需改变一下你对“形式”的看法。请记住,表单就像一个word文档模板。假设您将单词文档保存在硬盘驱动器上,并带有空白位置以填写您的姓名。稍后打开模板,键入您的名称,并将副本另存为V1.doc。当您返回并再次打开模板时 - 您的名称不存在,因为它已保存在V1.doc中。每次打开模板时,都会从头开始。

您设计的Infopath表单以及用户填写的模板(.xsn文件)。当用户填写并保存它时,它们实际上保存了一个只有数据(.xml文件)的副本。当用户与之交互时,.xsn模板不会更改。

所以要回答你的问题 - 在InfoPath中没有办法干净地跟踪自动递增ID。您需要使用一些代码(webservice,sharepoint等)来执行此操作。您还可以考虑将ID设为GUID(infopath确实支持),但它不会自动递增,如果必须由真人显示/使用它,它将不会看起来“干净”。