Written by: tomi on 2010/08/31 @ 22:04
MicrosoftSQLServerとMicrosoftInfoPathで,データベースシステムの「個別の指導計画」を開発するために,InfoPath上でSQLServerに作ったテーブルをリレーションシップで関連付ける |
1.「リレーションシップ」とは
データベースの複数のテーブルをあるフィールドと関連付けて連動するようにする仕組み。
2.テーブルのリレーションシップを設定する
リレーションシップの編集で,IDフィールド同士のリレーションシップを残して削除
テーブル基本Tにテーブル国語Tがリレーションシップで関連付けられた状態
※リレーションシップで関連付けられているフィールド
基本TテーブルのIDフィールドとその他のテーブルのIDフィールドが連動するようにリレーションシップとなっている。
基本TテーブルのIDフィードのデータと同じものが,自動的にその他のテーブルのIDフィールドに入力され,データが連動するようになる。
注意! 最初のテーブルから階層的にハイパーリンクを設定しないこと。階層構造のハイパーリンクにしてしまうと,InfoPathからSQLServerにデータを送信することができなくなる。
すべてのテーブルを,基本Tテーブルの直下としてハイパーリンクの設定をして次へ。
この接続での送信を有効にするのチェックがONになっていることを確認して,「完了」
基本Tテーブルにすべてのテーブルがリレーションシップで設定された状態
3.リレーションシップが設定されていることでどうなるのか
テーブルを配置してみる
年度Tテーブルのアイコンの上で右クリック→「繰り返しテーブル」
4.プレビューでクエリの結果を表示させる(仮データの入力とデータの保存)
4-1.InfoPathからの複数テーブルへのデータ入力
その他のテーブルについても同様に「項目の挿入」で行を表示させ,仮のデータを入力
「フォームは正しく送信されました。」と表示が出る。→「OK」
InfoPathから入力したデータがSQLServerに送られ保存された状態
基本TテーブルのIDと同じ値が自動的に他のテーブルのIDの欄に入力されている
各テーブルのIDフィールドは,基本TのIDフィールドとリレーションシップするよう設定したが,リレーションシップを設定したフィールド同士が連動するのである
4-2.他のデータでも試してみる
「メニューボタン」で最初の画面(ビュー1)にもどる
「大島なぎさ」のID b10-005 が各テーブルのIDフィールドに自動で入力される
※TIDも自動で数字が入力される。この数字はIDとは何の関連もない。主キーとしてデータが入力されるたびに連番で数字が入力されるようSQLServerで設定しているためである。
※IDフィールドによって各テーブルは基本Tテーブルとリレーションシップされる。基本TのIDフィールドに入力した生徒番号と同じIDのレコードを呼び出し表示させている仕組みである。
Catogories: SQLServerとInfoPath