Written by: tomi on 2011/02/13 @ 22:06
MicrosoftSQLServerとMicrosoftInfoPathで,データベースシステムの「個別の指導計画」を開発するために,セカンダリデータソースとInfoPathのクエリを設定する |
0.年度,学期,所属のデータをいくつか入力しておく
次の設定で検索ができるかどうかを確認するため,何人文化のデータを入力しておく
1.メニュー画面で検索する条件に必要なクエリフィールドを設定する
クエリフィールドから,検索の条件にしたいフィールドを選び,挿入した行にドラッグアンドドロップ
年度・・・q:年度T 学期・・・学期T・・・q:学期T 学部,学年・・・q:所属T 名前・・・q:基本T
2.クエリをドロップダウンリストボックスに変更する
挿入したクエリフィールドで右クリック→変更→ドロップダウンリストボックス
文字を入力する「テキストボックス」から選択ができる「ドロップダウンリストボックス」に変わる
しかしこの時点では選択肢となるデータがないため,選択はできない状態
3.セカンダリデータソースの設定
もう一度右クリック→ドロップダウンリストボックスのプロパティ
「
「ドロップダウンリストボックスのプロパティ」ウィンドウが開く
「リストボックス項目」から「外部データソースの値を参照する」を選択し,「追加」をクリック
「データ接続ウィザード」ウィンドウが開く 「データの受信」を選択して→次へ
「データベース(Microsoft SQL Server または Microsoft Office Access のみ)」を選択→次へ
「SQLServerとInfoPathで開発する「個別の指導計画」データベースシステム 3 InfoPathからSQLServerに接続する」で作成したデータ接続を選択→開く
基本Tだけのデータソース構造が表示されるが,「テーブルの削除」
「テーブルまたはクエリの追加」のウィンドウが開く 「所属T」を選択→「完了」
所属Tを基準にして「テーブルの追加」
「テーブルまたはクエリの追加」ウィンドウから,「基本T」→次へ
「所属T」のIDと「基本T」のIDだけを残して「リレーションシップの削除」→完了
「所属T」の年度 と 「年度T」の年度 のリレーションシップだけを残して削除しておく
「所属T」の年度 と 「学期T」の年度 のリレーションシップだけを残して削除しておく
「所属T」「基本T」「年度T」「学期T」のフィールドから選択しが作れるようになる 次へ
4.セカンダリデータソースから選択肢を設定する
4-1.「年度」のリストダウンボックスの設定
「データソース」が先ほど作ったセカンダリデータソースの「メニュー選択」になっていることを確認して「エントリ」欄の右側のボタンをクリック
「フィールドまたはグループの選択」ウィンドウが開く ツリーを展開して「年度T」の「年度」をクリック→OK
「エントリ」の欄に設定したフィールドのパスが表示されていることを確認して,「一意の表示名を持つ項目のみ表示する」にチェック→OK
プレビューで動作確認をしてみる
「年度」の欄がドロップダウンリストとなり,選択肢が表示されるようになる
選択して「個別の指導計画」ボタンをクリックしクエリを実行すると,
入力されているすべてのデータが表示されてしまうが,「年度T」のテーブルだけは,選択した年度のデータだけに絞り込まれて表示される
4-2.「学期」のドロップダウンリストボックスの設定
4-3.「学部」のドロップダウンリストボックスの設定
4-4.「学年」のドロップダウンリストボックスの設定
4-5.「名前」のドロップダウンリストボックスの設定
4-6.プレビューで動作確認をしてみる
各項目を適当に選択し,「個別の指導計画」ボタンでクエリを実行する
「潮田こうじ」のデータだけに絞られて表示されるようになった
しかし,「潮田こうじ」は「平成22年度」は「中学部」の「2年生」となっているはずで,入力してあるはずの「所属T」の学部,学年,年度のデータが表示されていない
これは,メニュー画面でのクエリの選択がでたらめだったが,でたらめに条件設定した範囲で合致するものが表示されたのである
メニュー画面のクエリの選択のところで,適切な選択ができるようにしておかなければならない
5.順番にクエリを絞り込んで表示させる設定
5-1.「学期」のフィルタの設定
「学期」を右クリック→「ドロップダウンリストボックスのプロパティ」ウィンドウから「XPathの選択」
「フィルタの条件指定」のウィンドウが開く 左のドロップダウンリストから「年度」を選択
真ん中は「が次の値に等しい」のままで,右のドロップダウンリストから「フィールドまたはグループの選択」を選択
「フィールドまたはグループの選択」ウィンドウが開く 「データソース」を「メイン」に変更する
「メイン」のクエリフィールドから,「q:年度」の「年度」を選択して→OK
「フィルタの条件」の右側も左側も「年度」となっているが,選んでいるデータソースとフィールドが違っていることに注意
5-2.「学部」のフィルタの設定
「年度」で「平成22年度」を選んだら,平成22年度に所属している学部,学年の児童生徒の名前が表示されるようになっていると,選択がでたらめにならなくて済む
「学部」を右クリック→「ドロップダウンリストボックスのプロパティ」ウィンドウから「XPathの選択」
「フィルタの条件指定」のウィンドウが開く 左のドロップダウンリストから「年度」を選択
真ん中は「が次の値に等しい」のままで,右のドロップダウンリストから「フィールドまたはグループの選択」を選択
「フィールドまたはグループの選択」ウィンドウが開く 「データソース」を「メイン」に変更する
「メイン」のクエリフィールドから,「q:年度」の「年度」を選択して→OK
「フィルタの条件」の右側も左側も「年度」となっているが,選んでいるデータソースとフィールドが違っていることに注意
5-3.「学年」のフィルタの設定
真ん中は「が次の値に等しい」のままで,右のドロップダウンリストから「フィールドまたはグループの選択」を選択
「フィールドまたはグループの選択」ウィンドウが開く 「データソース」を「メイン」に変更する
「メイン」のクエリフィールドから,「q:年度」の「年度」を選択して→OK
右のドロップダウンリストから「フィールドまたはグループの選択」を選択
絞り込みの条件が年度と学部の二つになった
年度が合っていてかつ学部もあっているものが絞られて表示されるようになる
5-4.「名前」のフィルタ設定
「メニュー選択」の「d:所属T」から「年度」を選択して→OK
「メイン」のクエリフィールドから,「q:年度」の「年度」を選択して→OK
「メニュー選択」の「d:所属T」から「学部」を選択して→OK
右のドロップダウンリストから「フィールドまたはグループの選択」を選択
条件が追加できる行が増える 「フィールドまたはグループの選択」を選択
5-5.動作確認をしてみる
年度・・平成22年度を選択すると学部は小学部か中学部しか選択できなくなる
※サンプルのデータを入力した段階では,平成22年度は,小学部1年生か中学部2年生しかいないことになっているので,高等部は表示されなくてよい
「学部」で小学部を選択すると,「学年」は「1年」しか選択できない
学年まで選択すると,その年度の所属の児童生徒の名前が出るようになる
これで,平成22年度の「佐々木りんこ」のデータだけが表示されるようになる
しかし,学期だけは平成23年度も表示されてしまう
5-6.隠れクエリを設定して不要なデータが表示されないようにする
年度のドロップダウンリストを右クリック→プロパティ 「データ」タブの「動作規則」をクリック
「動作規則」の設定ができるウィンドウが開く 「動作の追加」をクリック
「フィールドまたはグループの選択」ウィンドウが開く 「q:学期T」の「年度」を選択して→OK
「数式の挿入」ウィンドウが開く 「フィールドまたはグループの挿入」をクリック
「q:年度」の「年度」フィールドが動作するときに,「q:年度」の「年度」フィールドと同じ値を「q:学期」の「年度」フィールドに自動的に入力するようにして,隠れたクエリを設定した。
これによって,「学期T」テーブル内の「年度」フィールドでクエリがかかり,メニュー画面で指定した年度のデータだけが表示されるようになる。
再度,動作確認
Catogories: SQLServerとInfoPath