- 締切済み
アクセスのクエリについて
1.以下の二つのテーブルを作成しました。 ・テーブル1 case_no:数値型 ap_no:テキスト型 ap_date:日付型 kanriID:数値型 ・テーブル2 kanriID:数値型 F_name:テキスト型 2.上記した二つのテーブルの「KanriID」をリレーションシップして、 さらに、下記の項目をピックアップした選択クエリを作成しました。 case_no ap_no ap_date kanriID(テーブル1) F_name 3.上記のクエリを基に、ウィザードを利用して単票フォームを作成したのですが、データの更新ができないフォームが出来上がってしまいました。 どうしたら、データの更新ができるようになるのでしょうか?
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- marsah
- ベストアンサー率42% (3/7)
こんばんわ。 先日の続きです。 #ヘルプの質問で、 #“クエリからのデータ更新について” #と入力して下さい。 クエリのタイプ別で更新可能/不可能/別の更新方法が見られます。 あるクエリを元にしたフォームにもそのまま当てはまりますので、これがズバリの回答となるでしょう。 先日の推測ですが、 1:不正解 ([テーブル1] - [テーブル2] の関係が、一対多の場合は“通常は”更新可能、一部不可。) 2:正解 (ただし集約クエリという表現でなく、定義域集計関数を使用したクエリとなっています。) 3:不正解 (外部結合が存在する一対多リレーションシップで、"一" 側のテーブルにある空白フィールドは更新不可だが、普通は更新可能。) 4:どちらかといえば正解 ("UniqueValues/固有の値" プロパティに [Yes/はい] が設定されているクエリは更新不可。) ただし、これら以外にもいろいろとあるようです。 Accessの限界、についての話ですが、 「Visual Basic 6.0 + SQL Server 7.0 ビジネスアプリケーション構築ガイド」ソフトバンク という本の、COLIMN「悪者は誰だ」(P.217)を読みまして、今後の方針が決まりました。 patman2さんが今開発なさっているシステムがパーソナルユースでは無い物であったり、コアコンピダンスな業務の物であったり、VBAをバリバリ使ってでもそのシステムを完成させたいのでしたら、この本は非常にお勧めです。 ではこれにて。 ご武運を。
- marsah
- ベストアンサー率42% (3/7)
こんばんわ。 現在Accessが手元に無く、ヘルプも参照せずのうる覚え状態ですが… 推測1: [テーブル1] - [テーブル2] の関係が、多対一の場合は更新可能 [テーブル1] - [テーブル2] の関係が、一対多の場合は更新不可?(出来たかもしれない) 推測2:集約クエリ 合計(SUM)、カウント(COUNT)などのグループ関数が使用出来る集約クエリになっていると、Accessの仕様により読み取り専用になる。 推測3:外部結合 テーブルの結合の種類が、例えば“テーブル1の全てのレコードと、テーブル2の対応するレコードとを結合”(テーブル2に対応するレコードが無い場合、F_nameがnullになる)のような外部結合になっていると、Accessの仕様により読み取り専用になる。(更新できたかもしれない) 推測4:クエリのプロバディ デザインビューで、何も無い所をダブルクリックした時に出る、クエリそのもののプロパティに、更新の可・不可を設定する項目があったかどうか…? ヘルプでは、“レコードセット”で見つけられ…たかどうか?(笑) 判ったらまた。 私も以前この問題で結構悩みました。 どうもDBのスタンダードでは、クエリの結果(ビュー)は更新できない、というのが当たり前という暗黙のご了解があるようです。 そもそもそういうものだと。 Accessの、簡単な選択クエリをもとにしたレコードセットが更新可能なのは、むしろ例外的な親切機能なのでしょうか? しかし現実的には、正規化したDBなら、参照の4つや5つは当然したい。 逆に言えば、非正規化して対処するしかない… VBAを使わない限りは。(苦笑) VBAでこの問題を解決できるスキルがあれば、Accessにこだわる必要自体が。(笑) 門外漢でもDBが簡単に出来そうな顔してますがちょっと突っ込むと壁だらけなのがAccessなのだと嘆息する今日この頃です。(笑) でも、この辺のAccessの限界を十分把握しつつ、適切な規模で使うなら、本当にものすごく手軽にDBできて素晴らしいと思います。 愚痴の方が長くなってしまいました。(笑) ご勘弁下さい。 これに関連した質問を私がしています。 ご参照を。
お礼
ありがとうございました。 私が今作ろうとしているシステムは、社内のサーバーを介して10数人で利用するためのものです。 ご指摘の本を読んでみようと思うのですが、この本は普通の本屋で販売しているものなのですか? とにかく、探してみます。