現在オフラインです。再接続するためにインターネットの接続を待っています

InfoPath フォームでのデータを動的に読み込む方法

Office 2003 のサポートは終了しました

マイクロソフトでは、2014 年 4 月 8 日に Office 2003 のサポートを終了しました。この変更は、ソフトウェアの更新プログラムおよびセキュリティ オプションに影響しています。 この変更の意味および保護された状態を維持する方法について説明します。

重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。

英語版 KB:896451
概要
この資料でを動的に Microsoft Office InfoPath フォーム内のデータを読み込む 3 つの方法について説明します。 OnLoad イベントを使用、InfoPath の ExternalApplication オブジェクトを自動化する、または ASP ページを作成できます。 コード サンプルが用意されています。
概要
ここでは Office InfoPath フォームでのデータを動的に読み込む方法について説明します。
詳細
InfoPath フォームは、XML ファイルです。 ファイルの XML の Microsoft Windows エクスプローラーを指示する命令または Internet Explorer のアプリケーション、XML データが所属する処理、フォームが含ま。

InfoPath にデータを次の 3 つの方法のいずれかを使用動的に読み込みます。
  • OnLoad イベントを使用します。

    OnLoad イベントに、ASP ページまたは別の外部データ ソース、データを取得し、フォームにコピーするを呼び出してできます。
  • InfoPath の ExternalApplication オブジェクトを自動化します。

    このメソッドは新しいフォームが外部ソースからデータに基づくを作成します。
    メモ Internet Explorer で、 初期化し、スクリプトも安全だとマークされていない ActiveX コントロール の設定の設定に 確認メッセージを表示 またはこのメソッド を有効にする に作業するを使用する必要があります。
    外部ソースからデータ有効な InfoPath の XML はもする必要があります。
  • ASP ページを作成します。

    ASP ページは、フォーム ファイルとして開くには正しい形式内の XML データを返します。 XML データは、データを表示する InfoPath フォーム テンプレートに参照格納します。 InfoPath を問題なくデータを表示できます。

新しい仮想ディレクトリを作成します。

  1. Microsoft インターネット インフォメーション サービスを開始マネージャー。
  2. ツリー ビューで、 Web サイト ディレクトリを展開します。
  3. 新しい仮想ディレクトリを作成、 新規作成 ] をポイントして [ 仮想ディレクトリ ] をクリックする Web サイト右をクリックします。
  4. 手順に従って、 仮想ディレクトリの作成ウィザード 新しい仮想ディレクトリを作成します。

    メモ 仮想ディレクトリに書き込みアクセス許可を与えなければなりません。

InfoPath フォームをデザインします。

InfoPath 2007

  1. InfoPath を起動します。 左ペインで フォーム テンプレートのデザイン をクリックします。
  2. 新しくデザイン ]、[を フォーム テンプレート のオプションを選択、クリックして、 新しい オプションを選択する [ OK] をクリック します。
  3. [ デザイン タスク ] の [ コントロール ] をクリックします。
  4. テキスト ボックス を 2 回クリックしてボックスがフォームにコントロールを 2 つのテキストを追加するには。
  5. フォームを保存します。
  6. [ ファイル ] メニューの [ 発行 を] をクリックします。
  7. 発行ウィザード、[ 次へ ] をクリックします。 [ ネットワークの場所へ ] をクリックし、 次へ]
  8. フォーム テンプレートのパスとファイルの名前 ] ボックスに、作成した仮想ディレクトリの URL を入力します。
  9. [ フォーム テンプレートの名前 ] ボックスに、 twofield.xsn を入力します。

    メモ URL 次のように確認します。
    "http://"myServer/myVirtualDirectory/twofield.xsn
  10. [ 次へ ] をクリックして、[ 発行 ] をして [ 閉じる ] をクリックします。
  11. InfoPath を終了します。

InfoPath 2003

  1. InfoPath を起動します。 左ペインで 、フォームのデザイン をクリックします。
  2. [ フォームのデザイン ] で 新しい空白のフォーム をクリックします。
  3. [ デザイン タスク ] の [ コントロール ] をクリックします。
  4. テキスト ボックス を 2 回クリックしてボックスがフォームにコントロールを 2 つのテキストを追加するには。
  5. [ ファイル ] メニューの [ 発行 を] をクリックします。
  6. 発行ウィザードで [ 次へ ] をクリックして、 Web サーバー をクリックし、[ 次へ] </a0> をクリックします。
  7. [ Web の URL とファイル名 ] ボックス、作成した仮想ディレクトリの URL を入力します。
  8. [ フォーム名 ] ボックスに、 twofield.xsn を入力します。

    メモ URL 次のように確認します。
    "http://"myServer/myVirtualDirectory/twofield.xsn
  9. の終了日] 、[ 閉じる ] をクリックします。
  10. InfoPath を終了します。

Default.asp ファイル ページを作成します。

  1. 開始 ] をクリックして 実行 ] をクリックして、 メモ帳 と入力して [OK] をクリックします。
  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.closeEnd Sub</SCRIPT></HEAD><BODY onload="ButtonClick"></BODY></HTML>
  3. このファイルを Default.asp として保存します。 ファイルを新しい仮想ディレクトリを作成する」で作成した仮想ディレクトリに保存します。

フォームを動的に生成する ASP ページを作成します。

  1. 見つけて Twofield.xsn フォームを先ほど公開したをダブルクリックします。
    メモ 記入する、新しい空白フォームを開いた。
  2. [ ファイル ] を [ 名前を付けて保存 </a0>] をクリックします。
  3. ファイルを Form1.xml として保存します。
  4. 開始 ] をクリックして 実行 ] をクリックして、 メモ帳 と入力して [OK] をクリックします。
  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. メモ帳の第 2 インスタンスを起動します。
  8. [ ファイル ] メニューの [ ファイルを開く [</a0> をクリックして 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. Twofield.xsn フォーム テンプレートが置か同じ仮想ディレクトリに、GetData.asp ファイルをコピーします。

コードを 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. 開始 の実行 、フォームのパスを入力 [ OK] をクリック します。 次のようにパスを入力します。
    "http://"myServer/IPDynamicData/TwoField.xsn
  2. メッセージが表示は場合、[ ファイルを開く </a0> をクリックします。
InfoPath が起動したら、ことを確認および TwoField.xsn フォームを開きます。 フィールドが「テスト フィールド 5」を含まれ、Field2 には、「テスト フィールド 6」が含まれます。 これらは GetData.asp、 dataRequest パラメーターが「3」に設定を取得する値です。

ExternalApplication.New を使用して、既定のフォームを読み込みます

Default.asp ページ InfoPath を起動するには、 ExternalApplication オブジェクトを自動化するクライアント側スクリプトを作成し、新しいフォームを作成します。 GetData.asp によって返される XML データに基づいて新しいフォームです。 新しいフォームを作成するには、 開始 実行 、Default.asp ファイル ページのパスを入力 [ OK] をクリック します。 次のようにパスを入力します。
"http://"myServer/IPDynamicData/default の.asp
メモ このメソッドを使用してするには、 確認メッセージを表示 または 有効にする Internet Explorer で マーク初期化 ActiveX されてコントロールとスクリプトいない安全だと 設定をクリックする必要があります。

InfoPath が起動したら、ことを確認および TwoField.xsn フォームを開きます。 「テスト フィールド 3"、および Field2 が含まれている」フィールドが含まれますテスト フィールド 4"します。 これらは GetData.asp、 dataRequest パラメーターが「2」に設定を取得する値です。

ASP ページから既存のフォームを読み込む

GetData.asp ページは XML フォーム ファイルとして開くには正しい形式で返します。 これを行うには、 開始 実行 、GetData.asp ページのパスを入力 [ OK] をクリック します。 次のようにパスを入力します。
"http://"myServer/IPDynamicData/getData.asp?dataRequest=1
InfoPath が起動したら、ことを確認および GetData.asp フォームを開きます。 フィールドが「テスト フィールド 1」を含まれ、Field2 には、「テスト フィールド 2」が含まれます。 これらは GetData.asp、 dataRequest パラメーターが「1」に設定を取得する値です。

マイクロソフトは提供プログラミング言語の使用方法の一例としてのみ、姿表現または暗黙に提供します。 これはに含まれますに、黙示または商品性および特定目的に対する適合性の黙示保証は一切制限はありません。 この資料ではであると見なすは、例示されているプログラミング言語を作成したりプロシージャをデバッグするためのツールと使い慣れた。 マイクロソフト サポート エンジニアに、特定のプロシージャの機能について説明する役立ちますが追加機能を提供する構築手順、特定の要件を次の例は変更されません。

警告: この記事は自動翻訳されています

プロパティ

文書番号:896451 - 最終更新日: 03/27/2007 21:23:00 - リビジョン: 3.1

Microsoft Office InfoPath 2007, Microsoft Office InfoPath 2003, Microsoft Office InfoPath 2003, Service Pack 1 (SP1)

  • kbhowto kbscript kbasp kbmt KB896451 KbMtja
フィードバック
>crosoft.com/ms.js"> document.write("