วิธีการที่โหลดข้อมูลในแบบฟอร์มการ InfoPath แบบไดนามิก

การแปลบทความ การแปลบทความ
หมายเลขบทความ (Article ID): 896451 - ผลิตภัณฑ์ที่เกี่ยวข้องในบทความนี้
ขยายทั้งหมด | ยุบทั้งหมด

เนื้อหาบนหน้านี้

สรุป

บทความนี้อธิบายวิธีการสามแบบไดนามิกโหลดข้อมูลในรูปแบบ Microsoft Office InfoPath คุณสามารถใช้ได้onLoadเหตุการณ์ การทำให้การ InfoPathExternalApplicationวัตถุ หรือสร้างเพจที่มี ASP ตัวอย่างรหัสที่มีให้

บทนำ

บทความนี้อธิบายวิธีการที่โหลดข้อมูลในแบบฟอร์มการ InfoPath Office แบบไดนามิก

ข้อมูลเพิ่มเติม

ฟอร์มการ InfoPath คือ ไฟล์ XML แฟ้มประกอบด้วยข้อมูลจากแบบฟอร์มและ XML ที่มีการประมวลผลคำแนะนำที่บอก Microsoft Windows Explorer หรือ Microsoft Internet Explorer ที่เป็นของโปรแกรมประยุกต์ข้อมูล XML

คุณแบบไดนามิกสามารถโหลดข้อมูลลงใน InfoPath ได้ โดยใช้หนึ่งในสามวิธีดังต่อไปนี้:
  • ใช้แบบonLoadเหตุการณ์

    ในการonLoadเหตุการณ์ คุณสามารถเรียกข้อเพจ ASP หรือแหล่งข้อมูลภายนอกที่อื่น เพื่อดึงข้อมูล และ การคัดลอกลงในแบบฟอร์ม
  • การทำให้การ InfoPathExternalApplicationวัตถุ

    วิธีนี้สร้างฟอร์มใหม่ที่เป็นไปตามข้อมูลจากแหล่งภายนอก
    หมายเหตุ:กระบวนการเตรียมใช้งาน และสคริปต์ตัวควบคุม activex ที่ไม่ได้ทำเครื่องหมายว่าปลอดภัยต้องตั้งค่าการตั้งค่าใน Internet Explorerแสดงกล่องโต้ตอบหรือเปิดใช้งานสำหรับวิธีการนี้ให้ทำงาน
    ข้อมูลจากแหล่งภายนอกจะต้องเป็น InfoPath XML ที่ถูกต้อง
  • สร้างเพจที่มี ASP

    เพจ ASP ส่งกลับข้อมูล XML ในรูปแบบที่ถูกต้องสำหรับ InfoPath เปิดเป็นแฟ้มแบบฟอร์ม ข้อมูล XML ประกอบด้วยการอ้างอิงไปยังต้นแบบ InfoPath ฟอร์มที่แสดงข้อมูล InfoPath สามารถแสดงข้อมูลโดยไม่มีปัญหา

สร้างไดเรกทอรีเสมือนใหม่

  1. เริ่มการทำงานของบริการข้อมูลทางอินเทอร์เน็ตของ Microsoft 'ตัวจัดการ'
  2. ขยายการเว็บไซต์ไดเรกทอรีในมุมมองแผนภูมิ
  3. คลิกขวาเว็บไซต์ที่คุณต้องการสร้างไดเรกใหม่เสมือนทอรี ชี้ไปที่ใหม่แล้ว คลิกไดเรกทอรีเสมือน.
  4. ทำตามขั้นตอนในการการสร้างไดเรกทอรีเสมือนตัวช่วยสร้างเมื่อต้องการสร้างไดเรกทอรีเสมือนใหม่

    หมายเหตุ:คุณต้องให้สิทธิ์ในการเขียนไปยังไดเรกทอรีเสมือน

การออกแบบฟอร์มการ InfoPath

InfoPath 2007

  1. เริ่ม Infopath ในบานหน้าต่างด้านซ้าย คลิกการออกแบบแม่แบบของฟอร์ม.
  2. ภายใต้การออกแบบใหม่คลิกเพื่อเลือกนั้นแม่แบบของฟอร์มตัวเลือก คลิกเพื่อเลือกนั้นว่างตัวเลือก แล้วคลิกตกลง.
  3. ภายใต้งานออกแบบคลิกตัวควบคุม.
  4. คลิกกล่องข้อความสองครั้งเพื่อเพิ่มข้อความที่สอง ควบคุมกล่องให้กับฟอร์ม
  5. บันทึกแบบฟอร์ม
  6. ในการแฟ้ม:เมนู คลิกเผยแพร่.
  7. ในตัวช่วยสร้างการเผยแพร่ คลิกถัดไป. คลิกตำแหน่งที่ตั้งเครือข่ายแล้ว คลิกถัดไป.
  8. ในการแบบฟอร์มเท็มเพลพาธและชื่อแฟ้มกล่อง พิมพ์ URL ของไดเรกทอรีเสมือนที่คุณสร้างขึ้น
  9. ในการชื่อต้นแบบของฟอร์มกล่อง ชนิดtwofield.xsn.

    หมายเหตุ:ตรวจสอบให้แน่ใจว่า URL ที่มีต่อไปนี้:
    http://myServer/myVirtualDirectory/twofield.xsn
  10. คลิกถัดไปคลิกเผยแพร่แล้ว คลิกปิด.
  11. ออกจาก InfoPath

InfoPath 2003

  1. เริ่ม Infopath ในบานหน้าต่างด้านซ้าย คลิกการออกแบบแบบฟอร์ม.
  2. ภายใต้การออกแบบแบบฟอร์มคลิกใหม่ฟอร์มที่ว่างเปล่า.
  3. ภายใต้งานออกแบบคลิกตัวควบคุม.
  4. คลิกกล่องข้อความสองครั้งเพื่อเพิ่มข้อความที่สอง ควบคุมกล่องให้กับฟอร์ม
  5. ในการแฟ้ม:เมนู คลิกเผยแพร่.
  6. ในตัวช่วยสร้างการเผยแพร่ คลิกถัดไปคลิกไปยังเว็บเซิร์ฟเวอร์แล้ว คลิกถัดไป.
  7. ในการเว็บ URL และชื่อแฟ้มกล่อง พิมพ์ URL ของไดเรกทอรีเสมือนที่คุณสร้างขึ้น
  8. ในการชื่อฟอร์มกล่อง ชนิดtwofield.xsn.

    หมายเหตุ:ตรวจสอบให้แน่ใจว่า URL ที่มีต่อไปนี้:
    http://myServer/myVirtualDirectory/twofield.xsn
  9. คลิกถัดไปคลิกเสร็จสิ้นแล้ว คลิกปิด.
  10. ออกจาก InfoPath

สร้างเพ Default.asp

  1. คลิกเริ่มการทำงานคลิกเรียกใช้ประเภท:notepadแล้ว คลิกตกลง.
  2. วางรหัสต่อไปนี้ใน Notepad
    <%@ Language=VBScript %>
    
    <%
    
      dim serverName, hrefPath, fileNamePos, serverPath
    
      serverName = Request.ServerVariables("SERVER_NAME")
    
      hrefPath = Request.ServerVariables("PATH_INFO")
    
      fileNamePos = InStr( 1, hrefPath, "/Default.asp", 1 )
    
      hrefPath = Left(hrefPath, fileNamePos )
    
      serverPath = "http://" + serverName + hrefPath
    
    %>
    
    <HTML>
    
    <head>
    
    <SCRIPT LANGUAGE=VBScript>
    
    Sub ButtonClick()
    
     Dim oInfoPathApp
    
     set oInfoPathApp = CreateObject("InfoPath.ExternalApplication")
    
     oInfoPathApp.New "<%=serverPath%>GetData.asp?dataRequest=2"
    
     set oInfoPathApp = Nothing
    
     window.close
    
    End Sub
    
    </SCRIPT>
    
    </HEAD>
    
    <BODY onload="ButtonClick">
    
    </BODY>
    
    </HTML>
  3. บันทึกแฟ้มเป็น Default.asp บันทึกแฟ้มในไดเรกทอรีเสมือนที่คุณสร้างไว้ในส่วน "สร้างไดเรกทอรีเสมือนใหม่"

สร้างเพจที่มี ASP เพื่อสร้างฟอร์มแบบไดนามิก

  1. ค้นหา และจากนั้น คลิกสองครั้งที่ฟอร์ม Twofield.xsn ที่คุณประกาศ
    หมายเหตุ:เปิดฟอร์มที่ว่างเปล่าใหม่เพื่อให้คุณสามารถกรอกข้อมูล
  2. คลิกแฟ้ม:แล้ว คลิกบันทึกเป็น.
  3. บันทึกแฟ้มเป็น Form1.xml
  4. คลิกเริ่มการทำงานคลิกเรียกใช้ประเภท:notepadแล้ว คลิกตกลง.
  5. วางรหัสต่อไปนี้ใน Notepad
    <%@ Language=VBScript %>
    <%
      ' Define the XML namespace for the form.
      Dim strNamespace
      strNamespace = "http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26"
     
      'Calculate the path of this server directory.
      dim serverName, hrefPath, fileNamePos, serverPath
      serverName = Request.ServerVariables("SERVER_NAME")
      hrefPath = Request.ServerVariables("PATH_INFO")
      fileNamePos = InStr( 1, hrefPath, "/GetData.asp", 1 )
      hrefPath = Left(hrefPath, fileNamePos )
      serverPath = "http://" + serverName + hrefPath
     
      ' Set our return content type.
      Response.ContentType = "text/xml"
    
      'Create an XML document to return.
      Dim oXML
      Set oXML = Server.CreateObject("MSXML.DOMDocument")
     
      'Create the XML header that all XML documents must have.
      dim myPI1
      set myPI1 = oXML.createProcessingInstruction("xml", "version=""1.0"" encoding=""UTF-8""")
      oXML.insertBefore myPI1, oXML.childNodes.item(0)
     
      'Create the mso-infopathSolution processing instruction that binds the XML from this page to the 
      'TwoField.xsn InfoPath form template.
      dim myPI2
      set myPI2 = oXML.createProcessingInstruction("mso-infoPathSolution", "solutionVersion=""1.0.0.1"" productVersion=""11.0.5531"" PIVersion=""1.0.0.0"" href=""" + serverPath + "TwoField.xsn""")
      oXML.insertBefore myPI2, oXML.childNodes.item(1)
     
      'Create the mso-application processing instruction that marks the XML from this page as an InfoPath form.
      dim myPI3
      set myPI3 = oXML.createProcessingInstruction("mso-application", "progid=""InfoPath.Document""")
      oXML.insertBefore myPI3, oXML.childNodes.item(2)
     
      'Generate the XML for the form.
      dim myFields
      set myFields = oXML.createNode( 1, "myFields", strNamespace )
      oXML.appendChild myFields
     
      dim field1
      set field1 = oXML.createNode( 1, "field1", strNamespace )
     
      dim field2
      set field2 = oXML.createNode( 1, "field2", strNamespace )
     
      dim requestedData
      requestedData = Request("dataRequest")
      Select Case requestedData
         Case "1"
            field1.text = "test field 1"
            field2.text = "test field 2"
         Case "2"
            field1.text = "test field 3"
            field2.text = "test field 4"
         Case "3"
            field1.text = "test field 5"
            field2.text = "test field 6"
         Case Else
            field1.text = "test field 7"
            field2.text = "test field 8"
      end Select
     
      myFields.appendChild field1
      myFields.appendChild field2
     
      'Return the XML to the client.
      Response.Write oXML.XML
    %>
    
  6. ในการแฟ้ม:เมนู คลิกบันทึกเป็นประเภท:GetData.aspในการชื่อแฟ้มกล่อง แล้วคลิกบันทึก.
  7. เริ่มต้นอินสแตนซ์ที่สองของแผ่นจดบันทึก
  8. ในการแฟ้ม:เมนู คลิกOPENคลิกForm1.xmlแล้ว คลิกOPEN.
  9. ค้นหานี้xmlns: namespace ของฉันประกาศใน Form1.xml แล้ว คัดลอกค่าของงาน

    หมายเหตุ:ค่ามีลักษณะดังต่อไปนี้:
    http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26
  10. ใน GetData.asp fle ค้นหาบรรทัดต่อไปนี้:
    strNamespace = "http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26"
  11. ค่าของแทนstrNamespaceตัวแปร ด้วยค่าที่คุณคัดลอกในขั้นตอนที่ 9
  12. คลิกบันทึกแล้ว ออกจากแผ่นจดบันทึก
  13. คัดลอกแฟ้ม GetData.asp เรกทอรีเสมือนเดียวกันกับที่ที่แบบฟอร์ม Twofield.xsn ตั้งอยู่

เพิ่มรหัสให้กับฟอร์ม InfoPath โหลดข้อมูลจากเพจ ASP โดยอัตโนมัติ

  1. เริ่ม InfoPath
  2. ใน InfoPath 2007 คลิกการออกแบบฟอร์มเป็นแม่แบบในบานหน้าต่างด้านซ้าย ใน InfoPath 2003 คลิกการออกแบบแบบฟอร์มในบานหน้าต่างด้านซ้าย
  3. ใน InfoPath 2007 คลิกบนคอมพิวเตอร์ของฉันภายใต้เปิดแบบฟอร์ม. ใน InfoPath 2003 คลิกบนคอมพิวเตอร์ของฉันภายใต้เปิดแบบฟอร์มในโหมดการออกแบบในการการออกแบบแบบฟอร์มบานหน้าต่างงาน
  4. พิมพ์ URL ของแบบฟอร์มที่คุณเผยแพร่

    หมายเหตุ:URL มีลักษณะดังต่อไปนี้:
    http://myServer/myVirtualDirectory/twofield.xsn
  5. ในการเครื่องมือเมนู คลิกการเขียนโปรแกรมแล้ว คลิกonLoad เหตุการณ์.
  6. แทนค่าเริ่มต้นonLoadรหัสเหตุการณ์ ด้วยรหัสต่อไปนี้
    function XDocument::OnLoad(eventObj)
    {
       //Only load data if the fields are empty.
       if (XDocument.DOM.selectSingleNode("/my:myFields/my:field1").text == "" )
       {
          //Work out the location of the data file based on the current install directory.
        searchExpression = new RegExp( "TwoField.xsn", "ig" );
        searchResults = XDocument.Solution.URI.match( searchExpression );
        if (searchResults.length == 0)
         return;
         
        //Clear the "TwoField.xsn" part of the string.
        var targetDirectory = XDocument.Solution.URI.slice(0, searchResults.index );
     
          //Load the example data into and XML document.
          var objExternalData = new ActiveXObject("MSXML2.DomDocument.5.0");
          objExternalData.async = false;
          objExternalData.validateOnParse = false;
          objExternalData.load( targetDirectory + "getData.asp?dataRequest=3" );
     
          //Set the SelectionNamespaces property so that we can search the example data.
          var strSelectionNamespaces = XDocument.DOM.getProperty("SelectionNamespaces");
          objExternalData.setProperty("SelectionNamespaces", strSelectionNamespaces );
     
          //Find the root node in the example data and import it into the InfoPath document.
          var objExternalXML = objExternalData.selectSingleNode("my:myFields");
          var objReplacementXML = XDocument.DOM.importNode( objExternalXML, true );
          
          //Find the original data in the form and replace it with the example data.
          var objOriginalXML = XDocument.DOM.selectSingleNode("my:myFields"); 
        XDocument.DOM.replaceChild( objReplacementXML, objOriginalXML );
     }
    }
    
  7. ในการแฟ้ม:เมนู คลิกบันทึกแล้ว ปิดแบบฟอร์ม InfoPath

ทดสอบแบบ InfoPath

โหลดข้อมูล โดยใช้การonLoadเหตุการณ์

ฟอร์ม TwoField.xsnonLoadเหตุการณ์โหลดข้อมูลจากเพ GetData.asp ถ้าไม่มีข้อมูลอื่น ๆ ในแบบฟอร์ม โหลดข้อมูล ดำเนินการดังต่อไปนี้:
  1. คลิกเริ่มการทำงานคลิกเรียกใช้พิมพ์เส้นทางของฟอร์ม และจากนั้น คลิกตกลง. เส้นทางที่คุณพิมพ์มีลักษณะดังต่อไปนี้:
    http://myServer/IPDynamicData/TwoField.xsn
  2. ถ้าคุณได้รับการพร้อมท์ คลิกOPEN.
แจ้งให้ทราบที่เริ่มต้น InfoPath และฟอร์ม TwoField.xsn เปิดขึ้น Field1 ประกอบด้วย"ทดสอบฟิลด์ 5" และ Field2 ประกอบด้วย"ทดสอบฟิลด์ 6" ต่อไปนี้คือค่าที่ส่งกลับ GetData.asp เมื่อนั้นdataRequestพารามิเตอร์ถูกกำหนดเป็น "3"

โหลดฟอร์มเริ่มต้น โดยใช้ ExternalApplication.New

หน้า Default.asp สร้างสคริปต์ฝั่งไคลเอ็นต์ดำเนินการอัตโนมัติExternalApplicationวัตถุ InfoPath เริ่มการทำงานและเพื่อสร้างฟอร์มใหม่ แบบฟอร์มใหม่จะขึ้นอยู่กับข้อมูล XML ที่มีการส่งคืน โดย GetData.asp เมื่อต้องสร้างแบบฟอร์มใหม่ คลิกเริ่มการทำงานคลิกเรียกใช้พิมพ์เส้นทางของเพ Default.asp และจากนั้น คลิกตกลง. เส้นทางที่คุณพิมพ์มีลักษณะดังต่อไปนี้:
http://myServer/IPDynamicData/ค่าเริ่มต้น.asp
หมายเหตุ:เมื่อต้องการใช้วิธีนี้ คุณต้องคลิแสดงกล่องโต้ตอบหรือเปิดใช้งานสำหรับการเตรียมใช้งาน และสคริปต์ตัวควบคุม activex ที่ไม่ได้ทำเครื่องหมายว่าปลอดภัยการตั้งค่าใน Internet Explorer

แจ้งให้ทราบที่เริ่มต้น InfoPath และฟอร์ม TwoField.xsn เปิดขึ้น Field1 ประกอบด้วย "ทดสอบฟิลด์ 3 " และประกอบด้วย Field2"ทดสอบฟิลด์ 4 " ต่อไปนี้คือค่าที่ส่งกลับ GetData.asp เมื่อนั้นdataRequestพารามิเตอร์ถูกกำหนดไปยัง "% 2"

โหลดฟอร์มที่มีอยู่จากเพจที่มี ASP

หน้า GetData.asp XML ที่ส่งกลับค่าในรูปแบบที่ถูกต้องสำหรับ InfoPath เพื่อเปิดแฟ้มเป็นแฟ้มแบบฟอร์ม เมื่อต้องการทำเช่นนี้ คลิกเริ่มการทำงานคลิกเรียกใช้พิมพ์เส้นทางของเพ GetData.asp และจากนั้น คลิกตกลง. เส้นทางที่คุณพิมพ์มีลักษณะดังต่อไปนี้:
http://myServer/IPDynamicData/getData.asp?dataRequest=1
แจ้งให้ทราบที่เริ่มต้น InfoPath และฟอร์ม GetData.asp เปิดขึ้น Field1 ประกอบด้วย"ทดสอบฟิลด์ 1" และประกอบด้วย Field2 "ทดสอบฟิลด์ 2" ต่อไปนี้คือค่าที่ส่งกลับ GetData.asp เมื่อนั้นdataRequestพารามิเตอร์ถูกกำหนดไปยัง "% 1"

Microsoft แสดงตัวอย่างการเขียนโปรแกรมเพื่อประกอบการอธิบายเท่านั้น และไม่มีการรับประกัน ไม่ว่าโดยชัดแจ้งหรือโดยนัย ทั้งนี้รวมถึง แต่ไม่จำกัดเพียงการรับประกันโดยนัยในเรื่องการซื้อขายหรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ บทความนี้อนุมานว่าคุณมีความคุ้นเคยกับภาษาการเขียนโปรแกรมที่แสดงอยู่ รวมทั้งเครื่องมือต่างๆ ที่ใช้ในการสร้างและแก้จุดบกพร่องกระบวนการ วิศวกรฝ่ายสนับสนุนของ Microsoft สามารถช่วยอธิบายเกี่ยวกับหน้าที่การใช้งานของกระบวนการเฉพาะได้ แต่จะไม่ปรับเปลี่ยนตัวอย่างเหล่านี้เพื่อให้มีหน้าที่การใช้งานที่เพิ่มขึ้น หรือสร้างกระบวนการใดๆ เพื่อตอบสนองความต้องการอย่างใดอย่างหนึ่งของคุณโดยเฉพาะ

คุณสมบัติ

หมายเลขบทความ (Article ID): 896451 - รีวิวครั้งสุดท้าย: 22 กันยายน 2554 - Revision: 3.0
ใช้กับ
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
Keywords: 
kbscript kbasp kbhowto kbmt KB896451 KbMtth
แปลโดยคอมพิวเตอร์
ข้อมูลสำคัญ: บทความนี้แปลโดยซอฟต์แวร์การแปลด้วยคอมพิวเตอร์ของ Microsoft แทนที่จะเป็นนักแปลที่เป็นบุคคล Microsoft มีบทความที่แปลโดยนักแปลและบทความที่แปลด้วยคอมพิวเตอร์ เพื่อให้คุณสามารถเข้าถึงบทความทั้งหมดในฐานความรู้ของเรา ในภาษาของคุณเอง อย่างไรก็ตาม บทความที่แปลด้วยคอมพิวเตอร์นั้นอาจมีข้อบกพร่อง โดยอาจมีข้อผิดพลาดในคำศัพท์ รูปแบบการใช้ภาษาและไวยากรณ์ เช่นเดียวกับกรณีที่ชาวต่างชาติพูดผิดเมื่อพูดภาษาของคุณ Microsoft ไม่มีส่วนรับผิดชอบต่อความคลาดเคลื่อน ความผิดพลาดหรือความเสียหายที่เกิดจากการแปลเนื้อหาผิดพลาด หรือการใช้บทแปลของลูกค้า และ Microsoft มีการปรับปรุงซอฟต์แวร์การแปลด้วยคอมพิวเตอร์อยู่เป็นประจำ
ต่อไปนี้เป็นฉบับภาษาอังกฤษของบทความนี้:896451

ให้ข้อเสนอแนะ

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com