InfoPath 양식에서 데이터를 동적으로 로드하는 방법

기술 자료 번역 기술 자료 번역
기술 자료: 896451 - 이 문서가 적용되는 제품 보기.
모두 확대 | 모두 축소

이 페이지에서

요약

이 문서에서는 Microsoft Office InfoPath 양식의 데이터를 동적으로 로드하는 세 가지 방법을 설명합니다. OnLoad 이벤트에 사용하거나 InfoPath ExternalApplication 개체를 자동화할 ASP 페이지를 만들 수 있습니다. 코드 샘플은 제공됩니다.

소개

이 문서에서는 Office InfoPath 양식의 데이터를 동적으로 로드하는 방법에 대해 설명합니다.

추가 정보

InfoPath 양식의 XML 파일입니다. 양식 및 Microsoft Windows 탐색기에서 알려 주는 지침 또는 XML 데이터를 응용 프로그램에 속하는 Microsoft Internet Explorer에서 처리하는 XML 데이터 파일에 포함되어 있습니다.

다음 세 가지 방법 중 하나를 사용하여 InfoPath로 데이터를 동적으로 로드할 수 있습니다.
  • OnLoad 이벤트를 사용하십시오.

    OnLoad 이벤트의 ASP 페이지 또는 다른 외부 데이터 원본의 데이터를 검색하고 양식에 복사할 호출할 수 있습니다.
  • InfoPath ExternalApplication 개체를 자동화하십시오.

    이 메서드는 외부 원본 에서 데이터를 기반으로 새 양식을 만듭니다.
    참고 Internet Explorer의 안전하지 않은 것으로 표시된 ActiveX 컨트롤 초기화 및 스크립트 설정은 확인 또는 사용 이 메서드에 대한 작동하도록 설정되어 있어야 합니다.
    또한 외부 소스에서 데이터를 유효한 InfoPath에서 XML 있어야 합니다.
  • ASP 페이지를 만듭니다.

    ASP 페이지에서 InfoPath 양식 파일로 열려면 올바른 형식으로 XML 데이터를 반환합니다. 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. 시작 을 누르고, 실행 을, 메모장 을 입력한 다음 확인 을 누릅니다.
  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. 시작 을 누르고, 실행 을, 메모장 을 입력한 다음 확인 을 누릅니다.
  5. Paste the following code in 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. 파일 메뉴에서 열기, Form1.xml 을 클릭한 다음 열기 를 클릭하십시오.
  9. 찾고 있는 xmlns: 내 네임스페이스 Form1.xml, 선언에서 다음 해당 값을 복사합니다.

    참고 값을 다음과 유사합니다.
    http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26
  10. GetData.asp 파일 다음 줄을 찾습니다.
    strNamespace "http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26" =
  11. 9단계에서 복사한 값을 strNamespace 변수 값을 대체하십시오.
  12. 저장 을 누른 다음 메모장을 종료하십시오.
  13. GetData.asp 파일을 Twofield.xsn 양식 서식 파일에 위치한 동일한 가상 디렉터리로 복사하십시오.

ASP 페이지에서 데이터를 자동으로 로드하려면 InfoPath 양식 코드를 추가하십시오.

  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.xsn 양식의 OnLoad 이벤트 GetData.asp 페이지에서 데이터를 로드합니다. 데이터를 로드하려면 다음과 같이 하십시오.
  1. 시작 을 누르고, 실행 을, 폼, 경로를 입력한 다음 확인 을 누릅니다. 입력한 경로가 다음과 유사합니다.
    http://myServer/IPDynamicData/TwoField.xsn
  2. 사용자가 묻는 메시지가 나타나면 열기 를 클릭하십시오.
InfoPath가 시작됩니다, 표시 및 TwoField.xsn 양식을 엽니다. "필드 5 테스트" Field1 포함되어 있고 "필드 6 테스트" Field2 포함되어 있습니다. 이러한 GetData.asp dataRequest 매개 변수로 3으로 설정되어 있을 때 반환하는 값이 있습니다.

ExternalApplication.New 사용하여 기본 폼 로드

InfoPath 시작 ExternalApplication 개체를 자동화할 클라이언트 쪽 스크립트를: Default.asp)을 페이지를 만든 다음 새 양식을 만드는 것입니다. 새 양식 GetData.asp에 의해 반환되는 XML 데이터를 기반으로 합니다. 새 폼을 만들려면 시작 을 누르고 실행 을,: Default.asp) 페이지의 경로를 입력한 다음 확인 을 누릅니다. 입력한 경로가 다음과 유사합니다.
http://myServer/IPDynamicData/default .asp
참고 이 방법을 사용하려면 Internet Explorer에서 안전하지 않은 것으로 표시된 ActiveX 컨트롤 초기화 및 스크립트 설정을 확인 또는 사용 클릭해야 합니다.

InfoPath가 시작됩니다, 표시 및 TwoField.xsn 양식을 엽니다. 테스트 3 "필드 및 Field2 포함된" Field1 포함된 테스트 4 "필드. 이러한 GetData.asp dataRequest 매개 변수로 2로 설정하면 반환하는 값이 있습니다.

ASP 페이지에서 기존 양식을 로드하십시오.

InfoPath 양식 파일로 열려면 올바른 형식으로 XML GetData.asp 페이지를 반환합니다. 이렇게 하려면 시작 을 누르고 실행 을, GetData.asp 페이지의 경로를 입력한 다음 확인 을 누릅니다. 입력한 경로가 다음과 유사합니다.
http://myServer/IPDynamicData/getData.asp?dataRequest=1
InfoPath가 시작됩니다, 표시 및 GetData.asp 양식을 엽니다. "필드 1 테스트" Field1 포함되어 있고 "필드 2 테스트" Field2 포함되어 있습니다. 이러한 GetData.asp dataRequest 매개 변수로 1로 설정되어 있을 때 반환하는 값이 있습니다.

Microsoft는 묵시적인 보증 없이 목적으로만 프로그래밍 예제를 제공합니다. 이 포함되지만, 상품성 또는 특정 목적에의 적합성에 대한 묵시적인된 보증이 제한되지 않습니다. 이 문서에서는 만들려면 및 프로시저를 디버깅하는 데 사용되는 도구 및 여기서 설명하는 프로그래밍 언어에 익숙한 사용자를 대상으로 합니다. Microsoft 지원 엔지니어는 사용자에게 도움이 되도록 특정 절차에 대한 기능을 설명할 수 있지만 추가 기능을 제공하거나 특정 요구 사항에 맞도록 프로시저를 구성하지는 이 예제를 수정하지 않습니다.

속성

기술 자료: 896451 - 마지막 검토: 2007년 3월 27일 화요일 - 수정: 3.1
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
  • Microsoft Office InfoPath 2003, Service Pack 1 (SP1)
키워드:?
kbmt kbscript kbasp kbhowto KB896451 KbMtko
기계 번역된 문서
중요: 본 문서는 전문 번역가가 번역한 것이 아니라 Microsoft 기계 번역 소프트웨어로 번역한 것입니다. Microsoft는 번역가가 번역한 문서 및 기계 번역된 문서를 모두 제공하므로 Microsoft 기술 자료에 있는 모든 문서를 한글로 접할 수 있습니다. 그러나 기계 번역 문서가 항상 완벽한 것은 아닙니다. 따라서 기계 번역 문서에는 마치 외국인이 한국어로 말할 때 실수를 하는 것처럼 어휘, 구문 또는 문법에 오류가 있을 수 있습니다. Microsoft는 내용상의 오역 또는 Microsoft 고객이 이러한 오역을 사용함으로써 발생하는 부 정확성, 오류 또는 손해에 대해 책임을 지지 않습니다. Microsoft는 이러한 문제를 해결하기 위해 기계 번역 소프트웨어를 자주 업데이트하고 있습니다.

피드백 보내기

 

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