Microsoft SQL Server データベースに基づいてフォーム テンプレートを設計する

適用先
InfoPath 2010 InfoPath 2013

Microsoft SQL Server データベースと連携して、データのクエリまたはクエリを実行してデータを送信できるフォーム テンプレートを設計できます。

この記事の内容

概要

フォームには、メイン データ接続と呼ばれる 1 つのプライマリ データ接続を使用でき、必要に応じて 1 つ以上のセカンダリ データ接続を持つことができます。 フォームの目標に応じて、データ接続は、Microsoft SQL Server データベースや Web サービスなどの外部データ ソースにフォーム データを照会または送信する場合があります。

データベースに基づくフォーム テンプレートを設計する場合、Microsoft Office InfoPath は、クエリ フィールドとデータ フィールドを含むグループと、フォーム テンプレートのメイン データ接続としてクエリ データ接続を含むメイン データ ソースを作成します。 これらのフィールドとグループは、データベース内のテーブルにデータを格納する方法に対応します。 クエリ フィールドには、クエリフィールド内のデータと一致するレコードにクエリ結果を制限するためにユーザーが入力したデータが含まれます。 このフォーム テンプレートに基づくフォームがメイン データ接続を使用する場合、InfoPath はクエリ フィールドのデータを使用してクエリを作成します。 InfoPath は、クエリ データ接続を介してクエリを送信します。 データベースは、クエリ データ接続を介してクエリの結果をフォームに返します。 クエリの結果はデータ フィールドに格納され、これらのフィールドにバインドされているコントロールを使用して編集できます。

クエリのデータ構造とデータ フィールドは、データがデータベースに格納される方法と一致している必要があるため、メイン データ ソース内のこれらのフィールドまたはグループを変更することはできません。 フィールドまたはグループは、メイン データ ソースのルート グループにのみ追加できます。 データ ソースの詳細については、「関連項目」セクションのリンクを 参照してください

フォームが基になっているフォーム テンプレートとデータベースが次の要件を満たしている場合、フォームはフォームのメイン データ接続を介してデータベースにデータを送信できます。

  • フォーム テンプレートはブラウザー互換のフォーム テンプレートではありません ブラウザー互換のフォーム テンプレートを設計している場合、InfoPath はメイン データ接続に送信データ接続を作成しません。 ユーザーがブラウザーと互換性のあるフォーム テンプレートに基づくフォームでデータを送信できるようにするには、データベースで動作する Web サービスを使用します。
  • メイン データ ソース内の関連テーブルの各ペアの左側のテーブルには、主キーが含まれています 関連するテーブルのすべてのペアのリレーションシップの少なくとも 1 つは、左側のテーブルの主キーを含める必要があります。
  • フォームのメイン データ ソース内のデータ フィールドに大きなバイナリ データ型が格納されていない InfoPath は、画像、画像、OLE オブジェクト、添付ファイル、Office Access メモ データ型、SQL Text データ型など、大きなバイナリ データ型を格納できるフィールドがクエリに含まれている場合、送信データ接続を無効にします。

InfoPath でデータの送信接続が有効になると、ユーザーはメイン データ ソースのデータ フィールド内のデータをデータベースに送信できます。 InfoPath で送信データ接続が有効になっている場合は、このフォーム テンプレートに基づくフォームの送信オプションをカスタマイズできます。

ページの先頭へ

互換性に関する考慮事項

データベースに基づいてフォーム テンプレートを設計する場合は、ブラウザー互換のフォーム テンプレートを設計できます。 InfoPath は、ブラウザーと互換性のあるフォーム テンプレートのメイン データ接続としてクエリ データ接続を作成します。 ただし、ユーザーがデータベースにデータを送信できるように、ブラウザー互換のフォーム テンプレートを構成することはできません。 そのため、SQL Server データベースに基づいてフォーム テンプレートを設計していて、メイン データ接続を介してユーザーがフォーム データをデータベースに送信する場合、そのフォーム テンプレートをブラウザーと互換性のあるものにすることはできません。

ページの先頭へ

始める前に

SQL Server データベースに基づいてフォーム テンプレートを設計するには、データベース管理者から次の情報が必要です。

  • フォーム テンプレートを接続するデータベースを含むサーバーの名前。
  • このフォーム テンプレートで使用するデータベースの名前。
  • データベースに必要な認証。 データベースは、Microsoft Windows 認証 または SQL Server 認証を使用して、ユーザーがデータベースにアクセスする方法を決定できます。
  • フォームに送信するデータ、またはフォームからデータを受信するデータを含むテーブルの名前。 これがプライマリ テーブルです。 データベースで複数のテーブルを使用する場合は、他の子テーブルの名前が必要です。 また、プライマリ テーブルのフィールドとのリレーションシップを持つ子テーブル内のフィールドの名前も必要です。

ページの先頭へ

フォーム テンプレートを設計する

クエリ データ接続を使用してフォーム テンプレートを設計するには、次の操作を行う必要があります。

  1. フォーム テンプレートを作成する データベースに基づくフォーム テンプレートを作成すると、InfoPath は、フォーム テンプレートとデータベース間のメイン データ接続としてクエリ データ接続を作成します。 このプロセスにより、フォーム テンプレートのメイン データ ソースが自動的に作成されます。
  2. クエリ結果を表示する 1 つ以上のコントロールを追加する ユーザーがフォームを開くときにメイン データ ソースのフィールドのデータを表示および編集できるようにするには、フォーム テンプレートにコントロールを追加し、そのコントロールをメイン データ ソースのフィールドにバインドします。

手順 1: フォーム テンプレートを作成する

  1. [ ファイル ] メニューの [ フォーム テンプレートのデザイン] をクリックします。

  2. [ 新しいデザイン] の [ フォーム テンプレートのデザイン ] ダイアログ ボックスで、[ フォーム テンプレート] をクリックします。

  3. [ベース] ボックスの一覧 、[ データベース] をクリックします。

  4. ブラウザー互換フォーム テンプレートを設計する場合は、[ブラウザーと互換性のある機能のみを有効にする] チェックボックスを選択します。

    データ接続ウィザードでは、ブラウザーと互換性のあるフォーム テンプレートでデータの送信接続は有効になりません。 ユーザーがブラウザー互換フォーム テンプレートに基づくフォームからデータベースにデータを送信できるようにするには、データベースと連携する Web サービスにセカンダリ データ接続を追加します。 セカンダリ データ接続の詳細については、「関連項目」セクションのリンクを 参照してください

  5. [OK] をクリックします。

  6. データ接続ウィザードで、[データベースの 選択] をクリックします。

  7. [ データ ソースの選択 ] ダイアログ ボックスで、[ 新しいソース] をクリックします。

  8. [接続先のデータ ソースの種類] ボックスの一覧で、[Microsoft SQL Server] をクリックし、[次へ] をクリックします。

  9. [サーバー名] ボックスに、SQL Server データベースを含むサーバーの名前を入力します。

  10. [ ログオン資格情報] で、次のいずれかの操作を行います。

    • データベースで、Microsoft Windows ネットワークで使用される資格情報に基づいてアクセス権を持つユーザーが決定された場合は、[ Windows 認証の使用] をクリックします。
    • データベース管理者から取得した指定したユーザー名とパスワードに基づいてアクセス権を持つユーザーがデータベースで決定された場合は、[ 次のユーザー名とパスワードを使用する] をクリックし、[ ユーザー名 ] ボックスと [ パスワード ] ボックスにユーザー名とパスワードを入力します。
  11. [次へ] をクリックします。

  12. [目的のデータを含むデータベースの選択] ボックスの一覧で、使用するデータベースの名前をクリックし、[特定のテーブルに接続する] チェック ボックスを選択し、プライマリ テーブルの名前をクリックして、[次へ] をクリックします。

  13. ウィザードの次のページで、[ファイル ] ボックスにデータ接続情報を格納するファイルの名前を入力し、[完了] をクリックしてこれらの設定を保存 します
    クエリ データ接続で他のテーブルを使用する場合は、ウィザードのこのページに他のテーブルを追加できます。
    どう。

    1. [ テーブルの追加] をクリックします。
    2. [ テーブルまたはクエリの追加 ] ダイアログ ボックスで、子テーブルの名前をクリックし、[ 次へ] をクリックします。 InfoPath は、両方のテーブルのフィールド名を照合してリレーションシップを設定しようとします。 推奨されるリレーションシップを使用しない場合は、リレーションシップを選択し、[ リレーションシップの削除] をクリックします。 リレーションシップを追加するには、[ リレーションシップの追加] をクリックします。 [ リレーションシップの追加 ] ダイアログ ボックスで、それぞれの列の各関連フィールドの名前をクリックし、[OK] をクリック します
    3. [完了] をクリックします。
    4. 子テーブルを追加するには、次の手順を繰り返します。
  14. [次へ] をクリックします。

  15. ウィザードの最後のページで、メイン データ接続の名前を入力します。 この名前は、[ データ ソース ] 作業ウィンドウの [ データ ソース ] リストに表示されます。

  16. フォーム テンプレートが [概要 ] セクションの要件を満たしている場合、ウィザードのこのページでは、InfoPath がメイン データ接続でデータの送信接続を有効にしたことを示します。 送信データ接続の名前を変更するには、適切なボックスに新しい名前を入力します。 後でフォーム テンプレートに追加する別の送信データ接続を介してユーザーがフォーム データを送信する場合は、[この接続の送信を有効にする] チェック ボックスをオフにします。

    フォーム テンプレートが [概要] セクションの要件を満たしていない場合、InfoPath は送信データ接続を無効にし、[送信接続の名前を入力する] ボックスと [この接続の送信を有効にする] チェック ボックスは使用できません (無効)。 InfoPath が送信データ接続を無効にした場合、フォーム テンプレートのメイン データ接続にはクエリ データ接続のみが含まれます。

手順 2: クエリ結果を表示する 1 つ以上のコントロールを追加する

  1. [コントロール] 作業ウィンドウが表示されていない場合は、[挿入] メニューの [コントロールの選択] をクリックするか、Alt キーを押しながら I キー、C キーの順に押します。
  2. コントロールをフォーム テンプレートにドラッグします。
  3. [ コントロール バインド ] ダイアログ ボックスで、コントロールをバインドするグループまたはフィールドを選択します。

ページの先頭へ

送信オプションを構成する

フォーム テンプレートとデータ接続ウィザードで選択したテーブルが [概要 ] セクションの要件を満たしている場合、InfoPath はメイン データ接続を介してデータを送信するようにフォーム テンプレートを構成します。 この送信データ接続を使用する場合、InfoPath はフォーム テンプレートを構成して、ユーザーがフォーム データをデータベースに送信できるようにし、ユーザーがフォームに入力したときに [送信] ボタンをStandard ツール バーに追加し、[送信] コマンドを [ファイル] メニューに追加します。 また、InfoPath はフォーム テンプレートを構成して、ユーザーがフォームを送信してもフォームが開いたままになり、フォームが正常に送信されたかどうかを示すメッセージがユーザーに表示されるようにします。 [ 送信] ボタンのテキストと、ユーザーがフォームを送信した後の動作を変更できます。

  1. [ ツール ] メニューの [ 送信オプション] をクリックします。

    1. Standard ツール バーに表示される [送信] ボタンと、ユーザーがフォームに入力したときに [ファイル] メニューに表示される [送信] コマンドの名前を変更するには、[送信オプション] ダイアログ ボックスの [キャプション] ボックスに新しい名前を入力します。

      ヒント

      このボタンとコマンドにキーボード ショートカットを割り当てる場合は、キーボード ショートカットとして使用する文字の前にアンパサンド (&) を入力します。 たとえば、[ 送信] ボタンとコマンドのキーボード ショートカットとして ALT + B を割り当てるには、「 Su&bmit」と入力します。

  2. ユーザーがフォームに入力するときに、Standard ツール バーの [送信] コマンドまたは [送信] ボタンを使用しない場合は、[送信] メニュー項目を表示し、[送信] ツール バー ボタンのチェックボックスをオフにします。

    1. 既定では、ユーザーがフォームを送信すると、InfoPath はフォームを開いたままにし、フォームが正常に送信されたかどうかを示すメッセージを表示します。 この既定の動作を変更するには、[ 詳細設定] をクリックし、次のいずれかの操作を行います。

      • ユーザーが完了したフォームを送信した後でフォームを閉じるか、新しい空白のフォームを作成するには、[ 送信後 ] ボックスの一覧で目的のオプションをクリックします。

      • フォームが正常に送信されたかどうかを示すカスタム メッセージを作成するには、[カスタム メッセージチェック使用] ボックスを選択し、[成功時] ボックスと [エラー時] ボックスにメッセージを入力します。

        ヒント

        [エラー時] ボックスのメッセージを使用して、フォームを送信できない場合の操作をユーザーに伝えます。 たとえば、ユーザーがフォームを保存し、他のユーザーに連絡して詳細な手順を確認するよう提案できます。

      • ユーザーがフォームを送信した後にメッセージを表示しない場合は、[成功と失敗のメッセージチェック表示] ボックスをオフにします。

ページの先頭へ