データ ソースにバインドする場合は、InfoPath フォームのクエリでワイルドカード文字を使用する方法

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

英語版 KB:826992
概要
InfoPath の Microsoft Office 結合 Microsoft SQL Server または Microsoft Access に簡単にできます。InfoPath は ActiveX データ オブジェクト (ADO) を使用して、単純な直接複数テーブル クエリまたは Access データベースには SQL データベースを自動生成できます。その後、InfoPath で表示され、フォーム内で編集するクエリの結果をことができます。

高度なクエリでは、InfoPath プログラミングのいくつかの方法は、上級ユーザーまたは開発者に利用します。これらのプログラミング方法は、上級ユーザーまたは SQL の複雑な構文を使用して、カスタム クエリを実行できるフォームを作成するのには、開発者を有効にします。一般的なカスタム クエリの一例は、指定した条件に一致するレコードを検索するのにワイルドカード文字を使用します。

次の手順を使用して、SQL テーブルまたは Access のテーブルには、ワイルドカード文字の検索を実行するために InfoPath でマネージ コードを使用する方法については、 ADOAdapter オブジェクトです。
詳細
InfoPath を使用すると、クエリ データ接続にキャストします。AdoQueryConnection オブジェクトです。これを取得するのには、次の項目に関する情報を設定するのには、メソッドが表示されます。
  • 接続文字列
  • SQL コマンド テキスト
  • タイムアウト値
使用して、 AdoQueryConnectionこのオブジェクトは、ワイルドカード文字を使用するクエリなど、複雑な操作を実行するのには、SQL ステートメントを変更することができます。

この資料の情報は SQL のデータベースとデータベースにアクセスを適用します。次の例は、Microsoft Office Access 2007 と Access 2010 の Microsoft Office に含まれている Northwind データベースを使用します。

データベースを作成します。

まだ、ノースウィンド サンプル データベースを InfoPath のバージョンを使用していない場合は、ローカル データベースを作成します。これを行うには、次の手順を実行します。

  1. Microsoft Office へのアクセスを開始します。
  2. で、使用可能なテンプレート[]サンプル テンプレート.
  3. 選択、 Northwind データベース、およびクリック作成.

データベースのクエリ フォームをデザインします。

このセクションでは、InfoPath でクエリ フォームをデザインする方法について説明します。次の使用例は、ノースウィンド データベースの [仕入先] テーブルを使用します。このテーブルのクエリを実行するフォームを作成するには、InfoPath のバージョンが用意されている、手順を実行します。

InfoPath 2010

フォーム テンプレートを作成し、フォーム テンプレートのコード言語 C# を設定します。これを行うには、次の手順を実行します。
  1. InfoPath デザイナー 2010年を起動します。
  2. で、高度なフォーム テンプレート[]データベース、し フォームのデザイン。
  3. データ接続ウィザードをクリックします。 データベースを選択します。.
  4. Northwind データベースの保存先フォルダーに移動、Northwind.accdb、ファイルを選択しをクリックしてください ファイルを開く.
  5. で、 テーブルを選択します。 ウィンドウをスクロールするには、リストの下部にある選択を [仕入先] テーブルをクリックし [OK]。
  6. 以下のフィールドで選択されていることを確認してください、 [仕入先] テーブル:
    • ID
    • 会社
    • 名姓
    • Job_Title
    • Business_Phone
  7. クリックしてください。 次へ.
  8. クリックしてください。 終了日データ接続ウィザードを完了します。
  9. で、 フィールドを展開し、dataFieldsノード、およびドラッグの追加仕入ノードの下にあるボックスに、クエリを実行します。ボタン クリックします。
  10. ダイアログ ボックスが表示されたら、選択. します。 繰り返しテーブル.
  11. で、フィールドを展開し、queryFieldsノード、およびドラッグの追加[q: 仕入先 ノードの下にあるボックスに、新しいレコードボタン クリックします。(これに自動的にコントロールがあるにセクションを追加します。)
  12. 下に開発者タブで、クリックしてください言語.
  13. で、プログラミング言語セクションします。フォーム テンプレートのコード言語を選択 C#、し[OK].

InfoPath 2007

フォーム テンプレートを作成します。これを行うには、次の手順を実行します。
  1. InfoPath 2007 を起動します。
  2. ナビゲーションのペインで、フォームへの入力します。 ダイアログ ボックス、クリックして フォーム テンプレートをデザインします。.
  3. で、 フォーム テンプレートをデザインします。 ウィンドウクリックしてください。 [OK].
  4. で、 ツール メニューをクリックして データ接続、し 追加.は、 データ接続 ウィンドウが表示されます。
  5. で、 データ接続 ウィンドウで、クリックするには選択、 新しい接続を作成します。 チェック ボックスをクリックして選択、 データを受信します。 チェック ボックスをオンにしをクリックしてください次へ.
  6. オンにし、 データベース (Microsoft SQL Serverまたは Microsoft Office アクセスのみ) チェック ボックスをオンにしをクリックしてください次へ.
  7. クリックしてください。 データベースを選択します。.
  8. Northwind データベースを保存する場所フォルダーを選択、フォルダーを選択しをクリックしてください ファイルを開く.
  9. で、 テーブルを選択します。ダイアログ ボックスでは、リストの一番下までスクロール、[仕入先]テーブルをクリックし[OK].
  10. で、 データ ソースの構造ボックスの一覧で、列見出しだけが選択されていることを確認してください。
    • ID
    • 会社
    • 名姓
    • Job_Title
    • Business_Phone
  11. クリックしてください。次へ.
  12. クリックしてください。 データ ビューを最初にデザインします。、し、クリックしてください。 終了日 ビルドして、データ ソース セットアップ ウィザードを終了するのにはデフォルトのフォーム。
  13. で、 データ ソース 作業ウィンドウに、ダブルクリックdataFields.
  14. 移動、 仕入 ノードには、 データ ビュー形式を指定します。
  15. ダイアログ ボックスが表示されたら、追加します。 仕入 としては、 繰り返しテーブル.
  16. で、 ビュー メニューをクリックして 管理ビュー.
  17. で、 ビュー 作業ウィンドウに、クリックして、クエリ 表示します。
  18. で、 ツール メニューをクリックして [フォームのオプション.
  19. で、 カテゴリ ボックスの一覧でクリックしてください プログラミング.
  20. で、 フォーム テンプレートのコード言語 ボックスで、をクリックしてください C#、し [OK].

カスタム クエリを実行するためのフォームを変更します。

検索文字列のように、文字列が正確に一致しない値を持つレコードを検索する方法について説明します。ような値を持つレコードを検索するには、ワイルドカード文字の文字列を使用することができ、同様にSQL クエリ ステートメント。ワイルドカード文字の文字列とは同様にステートメントが、ワイルドカード文字検索条件に基づいてレコードを検索することができます。これらのレコードは、InfoPath に返されます。

カスタム クエリを実行するのには、フォームを変更するのには役職名InfoPath 2010 でまたは InfoPath 2007 にフィールドで、次の手順を実行します。

  1. デザイン モードを右クリックし、 クエリを実行します。 ボタンをクリックし [ボタンのプロパティ.
  2. 次の変更を行います。
    • 変更は、 アクション あるボタン動作規則とユーザー設定コード
    • 変更は、 ラベルするにはクエリを実行します。
    • 変更は、 IDするにはbtnQuery
  3. クリックして、 フォームのコードを編集します。 変更を適用し、Visual Studio Tools for Applications のエディターを起動します。BtnQuery"Clicked"のイベント ハンドラーが開きます。
  4. コメントを置き換える"///ここにコードを記述」を次のコード。
    //Create an XPathNavigator object for the main data sourceXPathNavigator xnMain = this.MainDataSource.CreateNavigator(); //Create an AdoQueryConnection from the main data source by "casting" the default//data connection to an "AdoQueryConnection"AdoQueryConnection cn = (AdoQueryConnection)this.DataConnections["Main connection"]; //Obtain the default SQL command for the form.string strOrigSQLCommand = cn.Command.ToString();   // Obtain the query node that you want to change.XPathNavigator xnSuppliersQuery = xnMain.SelectSingleNode("/dfs:myFields/dfs:queryFields/q:Suppliers", this.NamespaceManager); //Obtain the text that was entered for the wildcard character search, and then clear the current query parameter so that InfoPath will leave the current query parameter blank.string strJobTitle = xnSuppliersQuery.SelectSingleNode("@Job_Title", this.NamespaceManager).Value;xnSuppliersQuery.SelectSingleNode("@Job_Title", this.NamespaceManager).SetValue(string.Empty); //Have InfoPath construct an SQL command that is based on all other field values.string strMySQLCommand = cn.BuildSqlFromXmlNodes(xnSuppliersQuery); //Save the other query items, and then clear the other query items before the next query.string strSupplierID = xnSuppliersQuery.SelectSingleNode("@ID", this.NamespaceManager).Value;xnSuppliersQuery.SelectSingleNode("@ID", this.NamespaceManager).SetValue(string.Empty);string strCompany = xnSuppliersQuery.SelectSingleNode("@Company", this.NamespaceManager).Value;xnSuppliersQuery.SelectSingleNode("@Company", this.NamespaceManager).SetValue(string.Empty);string strLastName = xnSuppliersQuery.SelectSingleNode("@Last_Name", this.NamespaceManager).Value;xnSuppliersQuery.SelectSingleNode("@Last_Name", this.NamespaceManager).SetValue(string.Empty);string strFirstName = xnSuppliersQuery.SelectSingleNode("@First_Name", this.NamespaceManager).Value;xnSuppliersQuery.SelectSingleNode("@First_Name", this.NamespaceManager).SetValue(string.Empty);string strBusPhone = xnSuppliersQuery.SelectSingleNode("@Business_Phone", this.NamespaceManager).Value;xnSuppliersQuery.SelectSingleNode("@Business_Phone", this.NamespaceManager).SetValue(string.Empty); //Add Job_Title to the query so that Job_Title can support wildcard characters.if (strJobTitle != string.Empty){       if (strMySQLCommand != string.Empty)              strMySQLCommand += " AND ";        //Check whether the user entered the wildcard character (%) as part of the title.if(strJobTitle.Contains("%"))             strMySQLCommand += "[Job Title] LIKE '" + strJobTitle + "'";       else             strMySQLCommand += "[Job Title] LIKE '" + strJobTitle + "%'";               } //Construct the full query string.string strSQLQuery = strOrigSQLCommand;if (strMySQLCommand != string.Empty)strSQLQuery += " WHERE " + strMySQLCommand; //Set the command and run the query.cn.Command = strSQLQuery;cn.Execute(); //Restore all the user entries to the Query fields so that the user entries will //be available if you want to change and to rerun the query.xnSuppliersQuery.SelectSingleNode("@ID", this.NamespaceManager).SetValue(strSupplierID);xnSuppliersQuery.SelectSingleNode("@Company", this.NamespaceManager).SetValue(strCompany);xnSuppliersQuery.SelectSingleNode("@Last_Name", this.NamespaceManager).SetValue(strLastName);xnSuppliersQuery.SelectSingleNode("@First_Name", this.NamespaceManager).SetValue(strFirstName);xnSuppliersQuery.SelectSingleNode("@Job_Title", this.NamespaceManager).SetValue(strJobTitle);xnSuppliersQuery.SelectSingleNode("@Business_Phone", this.NamespaceManager).SetValue(strBusPhone); //Restore the default table command (for the next time).cn.Command = strOrigSQLCommand; //Clean upxnMain = null;cn = null;xnSuppliersQuery = null;
  5. クリックして、プロジェクトをビルドするに ビルドメニュー項目名や、クリックして ビルドプロジェクト名.
  6. 変更を保存して、InfoPath に戻ります。

コードをテストします。

前の手順で提供されているサンプル コードでのワイルドカード文字を検索してくださいすることができます、役職名 フィールドには、 [仕入先] テーブルです。検索クエリのように提供して % 営業部、すべてのレコードが返されるを連絡先が営業部にあります。そのレコードの条件を満たしている場合に限り、これらの連絡先、担当者、マネージャー、またはエージェント可能性します。% 営業部.「売上」していないの連絡先 役職名 フィールドをフィルターして、アウト。


返されるレコードをすべて営業担当部署で連絡先があることを確認するには、次の手順を実行します。
  1. InfoPath 2010 では。で、ホームリボン上のタブで、クリックしてくださいプレビュー.
    InfoPath 2007 の場合。ツールバーをクリックします。 プレビュー、しフォーム.
  2. で、 役職名 クエリのフィールドの種類 % 営業部.
  3. クリックしてください。 クエリを実行します。

カスタム クエリによって返されるレコードは、営業担当のすべての連絡先です。

IP2007、IP2010

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

プロパティ

文書番号:826992 - 最終更新日: 07/30/2011 10:58:00 - リビジョン: 3.0

  • kbhowto kbmt KB826992 KbMtja
フィードバック