Динамически загрузку данных в форме InfoPath

Переводы статьи Переводы статьи
Код статьи: 896451 - Vizualiza?i produsele pentru care se aplic? acest articol.
Развернуть все | Свернуть все

В этой статье

Аннотация

В данной статье описываются три способа, чтобы динамически загружать данные в форме Microsoft Office InfoPath. Можно использоватьOnLoadсобытия, автоматизация InfoPathExternalApplicationобъекта или создать страницу ASP. Примеры кода предоставляются.

Введение

В данной статье описывается, как динамически загружать данные в формы Microsoft Office InfoPath.

Дополнительная информация

Форма an InfoPath является XML-файл. Файл содержит данные из формы и обработки инструкции, проводник Windows или Microsoft Internet Explorer, к которой принадлежит приложения XML-данных XML.

Динамически загрузки данных в InfoPath с помощью одного из следующих трех способов:
  • ИспользованиеOnLoadсобытие.

    ВOnLoadсобытия, которые можно вызвать ASP-страницы или другого внешнего источника данных для извлечения данных и скопировать его в форму.
  • Автоматизация InfoPathExternalApplicationобъект.

    Этот метод создает новую форму, которая основана на данных из внешнего источника.
    ПримечаниеИнициализация и элементов управления ActiveX, не помеченных как безопасныенеобходимо задать параметр обозревателя Internet ExplorerПриглашенияилиВключитьдля работы этого метода.
    Данные из внешнего источника, также должен быть допустимым XML InfoPath.
  • Создание страницы ASP.

    Страницы the ASP возвращает XML-данных в неправильном формате для открытия файла формы в InfoPath. XML-данных содержит ссылку на шаблон формы InfoPath, где должны отображаться данные. InfoPath может отображать данные, не возникают.

Создание нового виртуального каталога

  1. Запуск служб Microsoft IIS диспетчера.
  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. Вставьте следующий код в программе «Блокнот».
    <%@ 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. Вставьте следующий код в программе «Блокнот».
    <%@ 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. Заменить значениеstrNamespaceпеременной со значением, скопированным на шаге 9.
  12. Нажмите кнопкуСохранитьи закройте Блокнот.
  13. Скопируйте файл GetData.asp же виртуальный каталог, где находится шаблон формы Twofield.xsn.

Добавить код в форму InfoPath, чтобы автоматически загрузить данные из ASP-страницы

  1. Запустите Microsoft 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события

The TwoField.xsn формыOnLoadсобытие загружает данные из GetData.asp страницы, если нет других данных в форме. Для загрузки данных, выполните следующие действия:
  1. Нажмите кнопкуЗапуститьщелкнитеЗапуститьВведите путь к форме и нажмите кнопкуОК. Путь, напоминающее приведенное ниже:
    http://myServer/IPDynamicData/TwoField.XSN
  2. Если появится запрос, нажмите кнопкуОткрыть.
Обратите внимание на то, InfoPath запускается и открывает форму TwoField.xsn. Содержит field1, "Проверьте поле 5" и содержит поле2 «проверьте поле 6». Это значения, возвращающий GetData.asp при егоdataRequestустановлено значение "3".

Загрузить форму по умолчанию с помощью ExternalApplication.New

The Default.ASP страница создает клиентский сценарий для автоматизацииExternalApplicationОбъект запустить InfoPath и создайте новую форму. Новая форма основана на XML-данные, возвращаемые GetData.asp. Чтобы создать новую форму, выберитеЗапуститьщелкнитеЗапуститьВведите путь к странице Default.ASP и нажмите кнопкуОК. Путь, напоминающее приведенное ниже:
http://myServer/IPDynamicData/по умолчанию.ASP
ПримечаниеДля использования этого метода необходимо нажать кнопкуПриглашенияилиВключитьдляИнициализация и элементов управления ActiveX, не помеченных как безопасныев Internet Explorer.

Обратите внимание на то, InfoPath запускается и открывает форму TwoField.xsn. Содержит Field1 ", поле тест 3» и содержит поле2" тестового поля 4 ". Это значения, возвращающий GetData.asp при егоdataRequestустановлено значение "2".

Загрузка существующей формы из ASP-страницы

Страница the GetData.asp возвращает XML в неправильном формате для InfoPath открыть его как файл формы. Для этого щелкнитеЗапуститьщелкнитеЗапуститьВведите путь к странице GetData.asp и нажмите кнопкуОК. Путь, напоминающее приведенное ниже:
http://myServer/IPDynamicData/getData.ASP?dataRequest=1
Обратите внимание на то, InfoPath запускается и открывает форму GetData.asp. Содержит field1, «проверьте поле 1» и содержит поле2 «проверьте поле 2». Это значения, возвращающий GetData.asp при егоdataRequestустановлено значение "1".

Корпорация Майкрософт предлагает примеры программного кода только для иллюстрации и или подразумеваемых. Включая, но не ограничивая, подразумеваемые гарантии товарности или пригодности для использования в определенных целях.. В данной статье предполагается, что вы знакомы с языком программирования предложенном в примере, а также с средствами, которые используются для создания и отладки.. Сотрудники службы поддержки Майкрософт могут объяснить возможности конкретной процедуры, но не выполнять модификации примеров для обеспечения функциональных возможностей или создания процедур соответствующих определенным требованиям..

Свойства

Код статьи: 896451 - Последний отзыв: 4 октября 2011 г. - Revision: 3.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
Ключевые слова: 
kbscript kbasp kbhowto kbmt KB896451 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке: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