zoukankan      html  css  js  c++  java
  • InfoPath: Passing Command Line parameters to a new form

    A frequent question from InfoPath users is “How can I pass parameters to a new InfoPath form when it is created?”

    Unfortunately, there’s no built-in functionality for passing command-line parameters to infopath.exe.

    BUT, that doesn’t mean it can’t be done J

    Note that the solution below requires the InfoPath SP-1 Preview.

    Solution:

    Jscript files can instantiate InfoPath with a new form from a template using NewFromSolution().  Jscript can also access the InfoPath DOM and pass parameters to it.  And finally, Jscript files can also accept command-line parameters.

    Usage: 

    In my case, I wanted my C# application to pass parameters to a new Form.  Basically, the user (running my App) searches the SQL database for a customer (in my case, patient) account.  They can then view/edit all of that account’s data right in the app.  The user can then select a date and time for an appointment and click “Create Encounter.”  This button calls my jscript file, passing it the ID number, date, and time that were selected.  The Jscript file creates a new InfoPath form from the template, and fills in the ID number, date, and time.  The Form Template has the “AfterChange” event for the ID number text box set so that it queries the database with that ID number, which returns that customer/patient’s information and populates all relevant fields in the Form.  It then closes InfoPath, and my application simply says “Encounter file created.”

    The form’s submit code puts it in a SharePoint library with a unique filename generated from the ID number and date/time of the appointment.

    Calling the script:

    In VB .NET, this is a simple matter of:

    Dim ProcID As Integer
    
    Dim Proc As Process
    
    ProcID = Shell("cscript script.js " + IDnum + " " + Date+ " " +Time + " " + AMPM)
    
    Proc = Process.GetProcessById(ProcID)
    
    Proc.WaitForExit(3000)
    
    MsgBox("Form created.")
    

    The Script:

    //myscript.js
    
    //parse parameters
    
    if(WScript.Arguments.count()==4)
    
    {
    
    var param1 = WScript.Arguments.Item(0);
    
    var param2 = WScript.Arguments.Item(1);
    
    var param3 = WScript.Arguments.Item(2);
    
    var param4 = WScript.Arguments.Item(3);
    
    }
    
    //Start the application
    
    var oApp = new ActiveXObject("InfoPath.Application");
    
    WScript.Echo("InfoPath Version: " + oApp.Version);
    
    //Open an InfoPath document from the published template
    
    var oXDocumentCollection = oApp.XDocuments;
    
    var oXDocument = oXDocumentCollection.NewFromSolution("http://server/Forms/template.xsn";;);
    
    // Get pointers to the target fields
    
    var oID = oXDocument.DOM.selectSingleNode("//ID");
    
    var oDate = oXDocument.DOM.selectSingleNode("//my:Date")
    
    var oTime = oXDocument.DOM.selectSingleNode("//my:Time")
    
    var oAMPM = oXDocument.DOM.selectSingleNode("//my:AMPM")
    
    //Update the fields
    
    oID.text = param1;
    
    oDate.text = param2;
    
    oTime.text = param3;
    
    oAMPM.text = param4;
    
    //Submit the Form
    
    oXDocument.Submit();
    
    //Close up shop
    
    oXDocumentCollection = null;
    
    oApp.Quit();
    
    oApp = null;
    

    This is a ready-to-go script file and all you need to change is A) The number of parameters B) The location of your template and C) The names of the fields you wish to populate.  You also may not want to submit the file or close InfoPath.  Or you may want to use oXDocument.SaveAs();

    转自:http://geekswithblogs.net/bpaddock/archive/2004/05/14/4907.aspx

  • 相关阅读:
    Spark API编程动手实战-01-以本地模式进行Spark API实战map、filter和collect
    spark内核揭秘-14-Spark性能优化的10大问题及其解决方案
    spark内核揭秘-13-Worker中Executor启动过程源码分析
    spark内核揭秘-12-AppClient注册Masters
    spark内核揭秘-11-Driver中AppClient源码分析
    spark内核揭秘-10-RDD源码分析
    spark内核揭秘-09-RDD的count操作 触发Job全生命周期-02
    spark内核揭秘-09-RDD的count操作 触发Job全生命周期-01
    spark内核揭秘-08-spark的Web监控页面
    Go每日一题(3)
  • 原文地址:https://www.cnblogs.com/timy/p/1735268.html
Copyright © 2011-2022 走看看