Date: Thu, 07 Jun 2007 16:37:22 +0900
From: 丸山 宏徳 <who@example.ne.jp>
大変ご無沙汰しております、丸山です。普段はROMで申し訳ありません。
さて表題の件、現在、SQL Server 2005 Express+Access 2007という組み合わせ
で構築予定のシステムがあり、技術面での調査を行っているのですが……2007は、
GUI以外でもかなり変更があるようですね。少し試してみたところ、以下のよう
な結果が出ました。
前提環境
【生徒】テーブル
ID:int(IDENTIFY)
姓:nchar
名:nchar
【保護者】テーブル
ID:int(IDENTIFY)
姓:nchar
名:nchar
【生徒保護者関係】テーブル
ID:int(IDENTIFY)
生徒ID:int →FK:生徒.ID
保護者ID:int →FK:保護者.ID
関係ID:int →FK:関係.ID
【関係】テーブル
ID:int(IDENTIFY)
関係名:nchar
解説は特に必要ないとは思いますが、「関係名」には「父母」とか「兄弟」とか
入ってます。
さて、そんなコトで堀川さんの「完全トレーニングテキスト」などの資料を見な
がら連結フォームの作成を試みたのですが……
(1)三つのテーブルを結合したビュー
【生徒保護者関係】多:1【生徒】と【生徒保護者関係】多:1【保護者】と
して結合させたビューを作成しフォームに連結したのですが、これは更新可能に
出来ませんでした。「固有のテーブル」を指定してもNGです。【生徒】【保護者】
の項目はもちろん、(「固有のテーブル」に【生徒保護者関係】を指定しても)
【生徒保護者関係】の項目も変更可能になりません。
(2)二つのテーブルを結合したビュー
【生徒保護者関係】多:1【保護者】で結合させたビューを作成してフォーム
に連結したのですが、これは何もしなくても更新可能でした。「固有のテーブル」
にテーブルを指定する必要もありません。ただし、レコードの追加を試みると以
下のダイアログボックスが表示され、一旦「esc」キーで動作を取り消す必要が
あります。
「この行のキー値はデータ ストアで変更されたか、削除されています。ローカ
ル行が削除されました」
ただし、レコードそのものは追加されています。escキーを押した後に「全てを
更新」で、追加されたレコードはちゃんと表示されます。
また、連結された1対多の1側のデータ(例:保護者.姓など)を変更した場
合でも、ちゃんと排他が掛かっています。他のクライアントで変更された場合、
例の「更新するか、クリップボードにコピーするか、他の利用者の更新を反映す
るか」というダイアログが表示されます。
(3)二つのテーブルを結合し、かつパラメータが必要なストアドプロシージャ
【生徒保護者関係】多:1【保護者】で結合させ、かつパラメータを必要とす
るストアドプロシージャをフォームに連結してみました。
この場合は「固有のテーブル」の指定が必要なようです。ただしデザインビュー
では指定できない(プロパティ指定画面の選択リストに何も表示されない)ので、
そのあたりは少々小細工が必要なようです。
ただし、そのあたりをクリアすれば(2)と同様、連結された1対多の1側のデー
タも変更可能ですし、ちゃんと排他も掛かっています。しかし、レコードを追加
した場合の動作も(2)と同じエラーが表示されます。
というコトで、このあたりの動作についてはもう少し調査する必要がありそうで
す。何か情報をお持ちの方がいらっしゃればご提供いただければ幸いです。
ちなみに、「この行のキー値は〜」というエラーをググったところ、以下のURL
が一つ引っかかっただけでした。
http://www.accessclub.jp/bbs3/0208/superbeg67105.html
以上、お手数とは存じますが、アドバイスをいただければ幸いです。よろしくお
願いします。
……しかしこうなると、「再同期コマンド」プロパティって一体何に使うんだろ
う……(苦笑)
例の「この行のキー値は〜」のエラーがこのあたりに関わっているような気がす
るのですがね。
丸山 宏徳
E-Mail:who@example.ne.jp
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|