Nasıl yapılır: dinamik olarak bir ınfopath formdaki verileri yüklenemedi.

Makale çevirileri Makale çevirileri
Makale numarası: 896451 - Bu makalenin geçerli olduğu ürünleri görün.
Hepsini aç | Hepsini kapa

Bu Sayfada

Özet

Bu makalede, üç şekilde dinamik olarak Microsoft Office ınfopath formdaki verileri yüklenemedi. OnLoad olayı kullanın, ınfopath ExternalApplication nesne otomatikleştirmek veya bir ASP sayfası oluşturabilirsiniz. Kod örnekleri sağlanır.

Giriş

Bu makalede, nasıl yapılır: dinamik olarak bir Office ınfopath formdaki verileri yüklenemedi.

Daha fazla bilgi

Infopath formu, bir XML dosyasıdır. Dosya, form ve Microsoft Windows Gezgini'ni açıklayan yönergeler veya Microsoft ınternet Explorer'ın ait olduğu uygulama XML verileri, XML verilerini içerir.

Aşağıdaki üç yöntemden birini kullanarak ınfopath içinde verileri dinamik olarak yükleyebilirsiniz:
  • OnLoad olayı kullanın.

    OnLoad olayı içinde bir ASP sayfası ya da başka bir dış veri kaynağına veri almak için ve bir forma kopyalamak çağırabilirsiniz.
  • ınfopath ExternalApplication nesne otomatikleştirme.

    Bu yöntem, dış kaynak verilerini temel alan yeni bir form oluşturur.
    Not Internet Explorer'da Güvenli olarak işaretlenmemiş ActiveX denetimlerini başlat ve komut dizinlerinde kullan ayarı Sor veya bu yöntemin Etkinleştir çalışması için ayarlanması gerekir.
    Ayrıca, dış kaynaktan veri geçerli bir ınfopath XML olması gerekir.
  • Bir ASP sayfası oluşturun.

    ASP sayfası, ınfopath formu dosya olarak açmak doğru biçimde XML verilerini döndürür. XML verileri, verilerin görüntülenmesi gereken ınfopath form şablonu için bir başvuru içerir. Infopath, bir sorun olmadan veri görüntüleyebilirsiniz.

Yeni bir sanal dizin oluşturun.

  1. Microsoft ınternet ınformation Services'ı Başlat Yöneticisi.
  2. Ağaç görünümündeki Web siteleri dizinini genişletin.
  3. Yeni sanal dizin oluşturma, Yeni ' nin üzerine gelin ve sonra Sanal dizin ' i tıklatın istediğiniz Web sitesini sağ tıklatın.
  4. ' Ndaki adımları izleyin Sanal Dizin Oluşturma Sihirbazı yeni bir sanal dizin oluşturmak için.

    Not Sanal dizin için yazma hakkı iznini vermelisiniz.

ınfopath formu tasarlama

Infopath 2007

  1. Infopath başlatın. Sol bölmede, <a1>Tasarım</a1> bir form şablonu tıklatın.
  2. Altında Yeni bir tasarımForm şablonu seçeneğini tıklatın, boş seçeneğini tıklatıp seçin ve Tamam ' ı tıklatın.
  3. Tasarım Görevleri altında denetimleri ' ni tıklatın.
  4. Metin kutusu, iki kez tıklatın iki metin eklemek için forma kutusu denetler.
  5. Formu kaydedin.
  6. Dosya menüsünde Yayımla ' yı tıklatın.
  7. Yayımlama Sihirbazı'nda, ileri ' yi tıklatın. Bir ağ konumu tıklatın ve sonra ileri ' yi tıklatın.
  8. Form şablonunun yolunu ve dosya adı kutusunda, oluşturduğunuz sanal dizininin URL'SINI yazın.
  9. Form şablonu adı</a0> kutusunda, twofield.xsn yazın.

    Not URL, aşağıdakine benzer olmasına dikkat edin:
    http:// myServer / myVirtualDirectory /twofield.xsn
  10. Ileri ' yi tıklatın, Yayımla ' yı tıklatın ve sonra Kapat ' ı tıklatın.
  11. Infopath çıkın.

InfoPath 2003

  1. Infopath başlatın. Sol bölmede, <a1>Tasarım</a1> bir formu tıklatın.
  2. Form Tasarla ' nın altında Yeni boş form ' u tıklatın.
  3. Tasarım Görevleri altında denetimleri ' ni tıklatın.
  4. Metin kutusu, iki kez tıklatın iki metin eklemek için forma kutusu denetler.
  5. Dosya menüsünde Yayımla ' yı tıklatın.
  6. Yayımlama Sihirbazı'nda, ileri ' yi tıklatın, sonra da için bir Web sunucusunu tıklatın ve sonra ileri ' yi tıklatın.
  7. Web URL'SI ve dosya adı kutusuna, oluşturduğunuz sanal dizininin URL'SINI yazın.
  8. Form adı</a0> kutusunda, twofield.xsn yazın.

    Not URL, aşağıdakine benzer olmasına dikkat edin:
    http:// myServer / myVirtualDirectory /twofield.xsn
  9. Ileri ' yi tıklatın, sonra son ' u tıklatın ve sonra Kapat ' ı tıklatın.
  10. Infopath çıkın.

Default.asp sayfasını oluşturma

  1. Başlat ' ı tıklatın, Çalıştır ' ı tıklatın, notepad yazın ve Tamam ' ı tıklatın.
  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. Dosyayı default.asp kaydedin. Sanal dizinde "yeni bir sanal dizin oluşturma" bölümünde oluşturduğunuz dosyayı kaydedin.

Form dinamik olarak oluşturmak için bir ASP sayfası oluşturma

  1. Bulun ve sonra da yalnızca yayımladığınız Twofield.xsn formu çift tıklatın.
    Not Yeni, boş bir form doldurmak için açılır.
  2. Dosya ' yı tıklatın ve sonra da <a2>Kaydet</a2>'ı tıklatın.
  3. Dosyayı Form1.xml kaydedin.
  4. Başlat ' ı tıklatın, Çalıştır ' ı tıklatın, notepad yazın ve Tamam ' ı tıklatın.
  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. Dosya menüsünde Farklı Kaydet'i tıklatın, GetData.asp <a2>Dosya adı</a2> kutusuna yazın ve sonra da <a2>Kaydet</a2>'i tıklatın.
  7. Not Defteri'ni ikinci bir örneğini başlatır.
  8. Dosya menüsünden ' ı tıklatın, Form1.xml ' ı tıklatın ve ' ı tıklatın.
  9. Bulun xmlns: kullandığım ad Form1.xml, bildiriminde ve değerini kopyalayın.

    Not Değer, aşağıdakine benzer:
    http://schemas.Microsoft.com/Office/InfoPath/2003/myXSD/2003-04-21T15:25:26
  10. GetData.asp dsya içinde aşağıdaki satırı bulun:
    strNamespace "http://schemas.microsoft.com/office/infopath/2003/myXSD/2003-04-21T15:25:26" =
  11. Değeri 9. adımda kopyaladığınız strNamespace değişkenin değerini değiştirin.
  12. Kaydet ' i tıklatın ve sonra da Not Defteri'nden çıkın.
  13. GetData.asp dosyayı Twofield.xsn form şablonunun bulunduğu aynı sanal dizine kopyalayın.

ınfopath form verilerini, ASP sayfasından otomatik olarak yüklemek için kodu ekleyin.

  1. Infopath başlatın.
  2. ınfopath 2007'de, tıklatın Form Tasarım şablonu sol bölmede. Infopath 2003'te, soldaki bölmede <a1>Tasarım</a1> bir form'ni tıklatın.
  3. Infopath 2007'de, Bilgisayarım üzerinde altında bir form şablonu Aç ' ı tıklatın. Infopath 2003'te, Bilgisayarım üzerindeTasarım modunda form Aç altında Form Tasarla</a1> görev bölmesinde tıklatın.
  4. Yayımlanmış form şablonunun URL'SINI yazın.

    Not URL, aşağıdakine benzer:
    http://myServer/myVirtualDirectory/twofield.xsn
  5. Araçlar menüsünden, programı tıklatın ve OnLoad olay ' ı tıklatın.
  6. Varsayılan OnLoad olay kodu aşağıdaki kodla değiştirin.
    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. Dosya menüsünde Kaydet ' i tıklatın ve sonra ınfopath formu kapatın.

ınfopath formu sınayın.

OnLoad olayı kullanarak verileri yüklenemedi.

Başka bir veri formu, form TwoField.xsn OnLoad olayı, verileri GetData.asp sayfasından yükler. Verileri yüklemek için <a0></a0>, aşağıdaki adımları izleyin:
  1. Başlat ' ı tıklatın, Çalıştır ' ı tıklatın, formun yolunu yazın ve Tamam ' ı tıklatın. Yazdığınız yol aşağıdakine benzer:
    http:// myServer / IPDynamicData /TwoField.xsn
  2. Istendiğinde, ' ı tıklatın.
ınfopath başlatma dikkat edin ve TwoField.xsn formunu açar. Alan1, "<a1>alan</a1> 5 sınama" içeren ve "<a1>alan</a1> 6 sınama", alan2 içerir. Bunlar, dataRequest parametresi "3" olarak ayarlandığında GetData.asp döndüren değerlerdir.

Varsayılan form ExternalApplication.New kullanarak yükleyin.

ınfopath başlatma ExternalApplication nesne otomatikleştirmek için istemci tarafı komut dosyası default.asp sayfasını oluşturur ve yeni bir form oluşturun. Yeni bir form GetData.asp tarafından döndürülen XML verilerini temel alır. Yeni bir form oluşturmak için <a0></a0>, Başlat ' ı tıklatın, Çalıştır ' ı tıklatın <a0>default.asp</a0> sayfasının yolunu yazın ve Tamam ' ı tıklatın. Yazdığınız yol aşağıdakine benzer:
http:// myServer / IPDynamicData / default .asp
Not Bu yöntemi kullanmak için <a0></a0>, ınternet Explorer'ın Güvenli olarak işaretlenmemiş ActiveX denetimlerini başlat ve komut dizinlerinde kullan ayarı Sor veya Etkinleştir tıklatmalısınız.

ınfopath başlatma dikkat edin ve TwoField.xsn formunu açar. "Sınama alanı 3" ve alan2 içerir"alan1 içeren sınama alanı 4". Bunlar, dataRequest parametresi "2" olarak ayarlandığında GetData.asp döndüren değerlerdir.

Varolan bir formu, bir ASP sayfasından yüklenemedi

ınfopath formu dosya olarak açmak doğru biçimde, XML GetData.asp sayfa döndürür. Bunu yapmak için <a0></a0>, Başlat ' ı tıklatın, Çalıştır ' ı tıklatın, ardından GetData.asp sayfasının yolunu yazın ve Tamam ' ı tıklatın. Yazdığınız yol aşağıdakine benzer:
http:// myServer / IPDynamicData /getData.asp?dataRequest=1
ınfopath başlatma dikkat edin ve GetData.asp formunu açar. Alan1, "<a1>alan</a1> 1 sınama" içeren ve "<a1>alan</a1> 2 sınama", alan2 içerir. Bunlar, dataRequest parametresi "1" olarak ayarlandığında GetData.asp döndüren değerlerdir.

Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; örtülü veya açık garanti vermez. Buna satılabilirlik veya belirli bir amaca uygunluk zımni garantileri de dahildir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler.

Özellikler

Makale numarası: 896451 - Last Review: 27 Mart 2007 Salı - Gözden geçirme: 3.1
Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Office InfoPath 2007
  • Microsoft Office InfoPath 2003
  • Microsoft Office InfoPath 2003, Service Pack 1 (SP1)
Anahtar Kelimeler: 
kbmt kbscript kbasp kbhowto KB896451 KbMttr
Machine-translated Article
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:896451

Geri Bildirim Ver

 

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