How to auto-increment document names in Microsoft InfoPath 2003
When you create new documents in Microsoft Word, for example, when you click save Word will often suggest a name of Document1. If you create a new document and click save Word will suggest Document2 and so on until you restart Word and then it will be Document1 again. Since Microsoft InfoPath is more web-based it always suggests the same name when saving a document to a SharePoint repository.
Sometimes you want to auto-increment the number attached to the file name. Maybe you use InfoPath forms to fill out PTO requests in your organization and instead of everyone saving one with the default name you want to control that name. Below is some easy to use code to increment the number that is stored on the end of the file-name regardless of who in your organization is saving the form to the library. You will want to modify the OnSubmitRequest of the Form in InfoPath and add in the custom code.
function XDocument::OnSubmitRequest(eventObj)
{
// If the submit operation is successful, set
// eventObj.ReturnStatus = true
var fSuccessful = false;
//start of custom code
var fso,d, f,ts;
fso = new ActiveXObject(”Scripting.FileSystemObject”);
//Change the following path to a file that everyone has acccess to or have some fun with AJAX and make a db call.
//Note: In Java Script to do a “\” you actually need 2, “\\”
//NextNumber.txt needs to be a text file with only a # in it. Start it at 0.
f = fso.GetFile(”\\\\servershare\\InfoPathForms\\NextNumber.txt”);
ts = f.OpenAsTextStream(1,-2);
s = ts.ReadLine( );
// Read in the value from the file that will be used as the next document number
s++;
ts.Close( );
// Now open the file to write back the next number after incrementing it
ts = f.OpenAsTextStream(2,-2);
ts.Write( s );
ts.Close( );
//end custom code
// Set the URL of the file that you want to submit here.
var strUrl = “http://servername/InfoPathPTOForms/PTORequest” + s + “.xml”;
try
{
// Create an xmlhttp object.
var oXmlHttp = new ActiveXObject(”MSXML2.XMLHTTP”);
// Check whether the document with the same name already exists on SharePoint Team Services (STS).
oXmlHttp.Open(”HEAD”, strUrl, false);
oXmlHttp.Send();
// No document with the URL has been found. Continue to submit.
// If you must replace the original file, you must call
// oXmlHttp.Open(”DELETE”, strUrl, false) to delete the document
// on STS first.
if (oXmlHttp.Status == 404)
{
// Put the document on STS.
oXmlHttp.Open(”PUT”, strUrl, false);
oXmlHttp.Send(XDocument.DOM.xml);
// A 200 status code or a 201 status code indicates that the form has been submitted successfully.
if (oXmlHttp.Status == 200 || oXmlHttp.Status == 201)
{
fSuccessful = true;
}
}
}
catch (ex){}
if (fSuccessful)
{
XDocument.UI.Alert(”Document submitted successfully!”);
eventObj.ReturnStatus = true;
}
else
{
eventObj.ReturnStatus = false;
}
}
posted in Microsoft InfoPath, Microsoft Office | 3 Comments