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

文書翻訳 文書翻訳
文書番号: 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 source
    XPathNavigator 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 up
    xnMain = null;
    cn = null;
    xnSuppliersQuery = null;
  5. クリックして、プロジェクトをビルドするに ビルドメニュー項目名や、クリックして ビルドプロジェクト名.
  6. 変更を保存して、InfoPath に戻ります。

コードをテストします。

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


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

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

プロパティ

文書番号: 826992 - 最終更新日: 2011年7月30日 - リビジョン: 3.0
キーワード:?
kbhowto kbmt KB826992 KbMtja
機械翻訳の免責
重要: このサポート技術情報 (以下「KB」) は、翻訳者による翻訳の代わりに、マイクロソフト機械翻訳システムによって翻訳されたものです。マイクロソフトは、お客様に、マイクロソフトが提供している全ての KB を日本語でご利用いただけるように、翻訳者による翻訳 KB に加え機械翻訳 KB も提供しています。しかしながら、機械翻訳の品質は翻訳者による翻訳ほど十分ではありません。誤訳や、文法、言葉使い、その他、たとえば日本語を母国語としない方が日本語を話すときに間違えるようなミスを含んでいる可能性があります。マイクロソフトは、機械翻訳の品質、及び KB の内容の誤訳やお客様が KB を利用されたことによって生じた直接または間接的な問題や損害については、いかなる責任も負わないものとします。マイクロソフトは、機械翻訳システムの改善を継続的に行っています。
英語版 KB:826992
Microsoft Knowledge Base の免責: Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。

フィードバック

 

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