![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
クエリで編集できるようにしたいです。
Access2003を使用しております。
学生さんの授業進捗管理をしていますが、全体構想としては、
一人一人が、どの課題が仕掛りで、どの課題が済みで、どの課題が次回予定か、というのを管理したいと思っています。
そこで、
「管理No」(数値型)
「姓」(テキスト型)
「名」(テキスト型)
というフィールドがあるテーブル(顧客管理テーブル)を作りました。
さらに、
「課題No」(テキスト型)※数値型では 「1」 からになってしまい並び順が変わってしまう為、00001から連番にする為にテキスト型にしました。
「課題名」(テキスト型)
「仕掛り」(Yes/No型)
「済み」(Yes/No型)
「次回予定」(Yes/No型)
というフィールドがあるテーブル(課題管理テーブル)を作りました。
上記2つのテーブルをクエリにしまして、
「管理No」
「姓」
「名」
「課題No」
「課題名」
「仕掛り」
「済み」
「次回予定」
というフィールド全てを使ったクエリ(課題管理クエリ)を作りました。
これであれば、クエリのデータシートでお名前毎に課題名が出てくるので、
理想的な形にはなったのですが、編集がまったく出来ません。
チェックボックスにレ点を入れることも、文字1つ編集することも出来ません。
編集できるようにするには、どうすればよろしいでしょうか?
宜しくお願い致します。
No.9ベストアンサー
- 回答日時:
「課題管理テーブル」について
課題管理テーブルのすべてのフィールドには主キー、
およびインデックスを設定しない。
主キーを設定していなくてもインデックスが
「はい(重複あり)」あるいは「はい(重複なし)」
になっていると当該のエラーが起こります。
課題管理テーブルに直接「管理No」に同じ番号を
入れて確認してみてください。
たびたびのご回答誠にありがとうございました。
お二方様のお力添えがありましたおかげで、理想の形にすることが出来ました。
お二方様がベストアンサーであることが間違いないのですが、一人しか選べません。
ほんとに残念です・・・。
ほんとに感謝の気持ちでいっぱいです。
誠にありがとうございます。
No.10
- 回答日時:
インデックスの確認はテーブルをデザインビュー
で開き、フィールドの設定の下のフィールドプロパティの
「標準」とか「ルックアップ」とある欄の下のほうに隠れているかも
しれません。フィールドをポイントする毎に各フィールドの
設定が示されます。
No.8
- 回答日時:
>これで突破口のヒントになりますでしょうか?
矛盾を招く構造はうまく稼働しません。
学びの支援 : Access 2007
http://www.witc.co.jp/program/education/ops/ac/i …
リレーションシップ、
参照整合性とはテーブル間で矛盾のないデータ管理をするための規則
リレーションシップ、1対1構成、1対多構成、多対多構成、テーブル正規化、
こういうのを学習するとこの問題がなぜ起きているかのヒントになると思います。
学習しておいてください。
>クエリに入力できるのは、管理No1つに対して1レコードのみしか入らないというように見受けられます。
田中-課題1での「済」が保持されて、
和田-課題1での「済」も保持される状態でなくてはならないのでは?。
「済」は顧客単位に依存する情報であって課題単位ではない。
今は顧客単位になっていません。
このあたりが原因かと思います。
----------------
課題管理テーブルには、
「課題No」 「課題名」
課題が変わったときしか更新されない
顧客管理テーブルには、
「管理No」 「姓」 「名」
顧客が変わったときしか更新されない
課題進捗テーブルを新規作成、
「課題No」 「管理No」 「仕掛り」 「済み」 「次回予定」
「課題No」「管理No」が主キー。
随時進捗を保持するレコード。
課題進捗参照クエリ
課題進捗参照クエリではすべての情報を表示し参照するのみ、表示・レポート用
「課題No」 「課題名」 「管理No」 「姓」 「名」 「仕掛り」 「済み」 「次回予定」
課題進捗入力フォーム
課題進捗テーブルをレコードソースにする、
「課題名」「姓」「名」の情報は非連結で参照するのみ
「課題No」 「課題名」 「管理No」 「姓」 「名」 「仕掛り」 「済み」 「次回予定」
入力 参照 入力 参照 参照 入力 入力 入力
----------------
とりあえずこういう構成でもいいのでは、と思います。
ある項目を入力(更新)したとき、どのテーブルのどの項目が更新されるべきか、
更新されたときに次回参照したら反映されているか、
リレーションシップを中心に、こういうところを整理してみてください。
たびたびのご回答誠にありがとうございました。
結論から申し上げますと、理想の形にすることが出来ました。
layy様のテーブルをもう一つ作成する手法と、piroin654様のインデックスを「いいえ」にする方法が大きなヒントになり、結果的にお二方の案を組み合わせる形でうまくいきました。
その他にもルックアップを使ってみたり、結構自分なりにアレンジを加えたので、どこをどうしたのかという説明がしにくいのですが、理想の形に辿り着いたのはほんとに嬉しい限りです。
不具合がないか少しテストを重ねてみたいと思います。
大変お世話になりました。
本来はお二方にベストアンサーしたいのですが、一人しか選べなくてほんとに残念です・・・。
ほんとに感謝の気持ちでいっぱいです。
誠にありがとうございます。
No.7
- 回答日時:
事象整理すると
顧客管理に2件、課題管理に3件あり、クエリで管理NOで結合しなかったら2×3の6行表示される。済みのチェック更新ができない。
顧客管理に2件、課題管理に0件あり、クエリで管理NOで結合したら、空白行で表示される。管理NOは3豊臣秀吉とでも入力できるが課題管理NOは入力できない。済みのチェックもできない。インデックス~のエラーが出る。
顧客管理テーブルの管理NOのみ主キーである。
クエリの結合は管理NO、両方のテーブルの同じ行だけ含める、としている。
クエリで空行から2行を入力するとき、顧客管理テーブル側の管理NOの入力はあるが課題管理テーブル側の管理NOの入力欄はありますか?。インデックスエラーは1行目入れようしたらエラーですか?、管理NO入力したとき氏名は表示されませんでしたか?。
上記のような状態ですね?。
再度確認です。
クエリで
田中-課題1で済と入力
田中-課題2で済と入力
和田-課題1で済と入力
と考えていますか?。
3レコード目の済は、課題管理テーブルの既に1レコード目で入力した済を参照でいいですか?。それとも別、1レコード目は済、3レコード目は未済ですか?。
今のテーブルやクエリの状態でどう使うかがまだ整理できてなくてわかりません。
それと、今後のために、更新できるクエリと更新できないクエリがあるのでそのあたりを学習しておくと良いかと思います。
仕事の関係で返信が遅れてしまいました。
大変失礼いたしました。
ご質問の件でございますが、
>顧客管理に2件、課題管理に3件あり
これはほんの一例です。実際は顧客管理に100数十件、課題管理に300件超というところです。
>クエリで管理NOで結合しなかったら2×3の6行表示される。済みのチェック更新ができない。
その通りでございます。
>顧客管理に2件、課題管理に0件あり、クエリで管理NOで結合したら、空白行で表示される。
管理NOは3豊臣秀吉とでも入力できるが課題管理NOは入力できない。済みのチェックもできない。
インデックス~のエラーが出る。
空白行が表示される所まではその通りです。
空白行にレコードを入力しますと、1件目のレコード(例:管理No.1、課題管理No.1)は入力できます。
続いて2件目のレコードに(管理No.1、課題管理No.2)で入力すると、インデックスのエラーが表示されました。
では試しに、2件目のレコードに(管理No.2、課題管理No.1)で入力してみたら入りました。
続いて3件目のレコードに(管理No.2、課題管理No.2)、
あるいは(管理No.2、課題管理No.1)と入力しても、いずれもインデックスエラーです。
ということは、クエリに入力できるのは、管理No1つに対して1レコードのみしか入らないというように見受けられます。
>顧客管理テーブルの管理NOのみ主キーである。
その通りでございます。
>クエリで空行から2行を入力するとき、顧客管理テーブル側の管理NOの入力はあるが課題管理テーブル側の管理NOの入力欄はありますか?。
あります。
>インデックスエラーは1行目入れようしたらエラーですか?
上記でもご説明しましたが、1行目というよりも、管理Noを重複して入力しようとした場合にエラー発生と見受けられます。
>管理NO入力したとき氏名は表示されませんでしたか?
入力中は表示されません。
入力後保存して一旦閉じ、再度クエリを開くと表示されているという感じです。
>クエリで
田中-課題1で済と入力
田中-課題2で済と入力
和田-課題1で済と入力
と考えていますか?。
その通りです。
管理Noも重複するし、課題管理Noも重複することになります。
>3レコード目の済は、課題管理テーブルの既に1レコード目で入力した済を参照でいいですか?。それとも別、1レコード目は済、3レコード目は未済ですか?
ここがちょっと意味がよく分からないのですが、参照の仕方にこだわりはございませんので、
結果的に、
田中-課題1で済と入力
田中-課題2で済と入力
和田-課題1で済と入力
が実現できて、一覧で表示出来るようになれば、どういう形であっても構いません。
テーブルを根本的に作り直せと言われれば作り直します。
これで突破口のヒントになりますでしょうか?
クエリについてももっと勉強していきます。
ありがとうございます。
No.6
- 回答日時:
#4についてですが、「課題管理テーブル」のフィールドの
どれかに主キーを設定していませんか。たとえば、
「課題No」あるいは、「管理No」。
また、クエリでどこか変更しましたか。
これらのどれかが関係していないと、補足のような
エラーは出ないのですが。
仕事の関係で返信が遅れてしまいました。
大変失礼いたしました。
ご質問の件でございますが、
>課題管理テーブル」のフィールドのどれかに主キーを設定していませんか
確認しましたが主キーは設定されておりません。
>クエリでどこか変更しましたか
変更していません。
下記のままです。
SELECT 課題管理テーブル.管理No, 顧客管理テーブル.姓, 顧客管理テーブル.名, 課題管理テーブル.課題No, 課題管理テーブル.課題名, 課題管理テーブル.仕掛り, 課題管理テーブル.済み, 課題管理テーブル.次回予定
FROM 顧客管理テーブル INNER JOIN 課題管理テーブル ON 顧客管理テーブル.管理No = 課題管理テーブル.管理No
ORDER BY 課題管理テーブル.管理No;
諦めるしかないですかね・・・?
No.5
- 回答日時:
Aさんが課題1を終えましたがBさんはまだです。
Bさんが課題2を終えましたがAさんはまだです。
AさんBさんとも課題3を終えました。
こんなのを管理したいですか?。
今の状態でやりたい機能は満たしてますか?。済みとかどういう使われ方ですか。その顧客が課題を終わったかどうかなのか、課題提供が終わったかどうかなのか。今の構成では後者を意図しているように思います。確認をお願いします。
課題管理クエリにある項目でもって、状態を入力するテーブルにしたほうがいいのではないでしょうか。
姓、名、課題名はダブるので除きますが。
更新入力するテーブルと1度作れば良いテーブルと分けて考えてみたらと思います。
私の中では下記のようなイメージをしています。
(例)※ □はYes/No型の意味です。
仕掛り 済み 次回予定
田中一郎 課題1 □ □ □
田中一郎 課題2 □ □ □
田中一郎 課題3 □ □ □
和田次郎 課題1 □ □ □
和田次郎 課題2 □ □ □
和田次郎 課題3 □ □ □
ちなみに、「済み」というのは課題が終わった時点で、レ点を入れます。
そこで顧客管理テーブルには、
「管理No」 「姓」 「名」
1 田中 一郎
2 和田 次郎
課題管理テーブルには、
「課題No」 「課題名」 「仕掛り」 「済み」 「次回予定」
00001 課題1 □ □ □
00002 課題2 □ □ □
00003 課題3 □ □ □
という2つのテーブルを作りました。
そもそものテーブルの作り方に問題があるんですかね・・・。
データベースそのものがよくわかってないので、こんなことになるんですね。
No.4
- 回答日時:
>管理Noは数値型なので、「00001」ではなく「1」です。
>課題管理テーブルの「課題No」フィールドがテキスト型で、
>「00001」となります。
>このあたりに何か解決のヒントがあるのでしょうか・・・?
数値型とテキスト型は私の読み間違いですが、これは
表示されないことの理由ではありません。
既存のデータが表示されないのは「課題管理テーブル」に
まだ「管理No」が記入されていないからです。
もともとの二つのテーブル間にはデータを関連させる
項目がなかったので、関連させる項目として「管理No」
を「課題管理テーブル」を新規に付け加えたのですが、
その時点ではデータはそこには入っていません。
「顧客管理テーブル」と「課題管理テーブル」は「管理No」
によって紐つけられており、クエリの「管理No」に1と入れると
「管理No」1の氏名が表示されます。この時、記入した1は
「課題管理テーブル」の「管理No」に書き込まれます。
つまり、「顧客管理テーブル」は「管理No」と「姓」と「名」
を参照しているだけで、入力されるデータは「課題管理テーブル」
に書き込まれていきます。
既存のデータがどの学生さんのデータか、「課題管理テーブル」
の個々のレコードで判別できるのであれば、「課題管理テーブル」
の「管理No」に数値を入力すればクエリで表示されます。
あるいは、最初からクエリを開いて入力していけばデータの整合性が
とれます。
既存の「課題管理テーブル」を別名にしておき、空の
「課題管理テーブル」を作り、入力して確認してみてください。
課題管理テーブルを空にして、
管理No 姓名 課題No 課題名 仕掛り 済み 次回予定
1 田中一郎 00001 課題1 □ □ □
2 田中一郎 00002 課題2 □ □ □
クエリで上記のように入力してみようとしたのですが、
下記のエラーが出て保存が出来ませんでした。
インデックス、主キー、またはリレーションシップで値が重複しているので、テーブルを変更できませんでした。重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。
となってしまいます・・・。
なかなかうまくいかないもんですね・・・。
No.3
- 回答日時:
#2です。
張り付けたSQL文が字数の関係で飛んでいるのですが、SELECT 課題管理テーブル.管理No, 顧客管理テーブル.姓, 顧客管理テーブル.名, 課題管理テーブル.課題No, 課題管理テーブル.課題名, 課題管理テーブル.仕掛り, 課題管理テーブル.済み, 課題管理テーブル.次回予定
FROM 顧客管理テーブル INNER JOIN 課題管理テーブル ON 顧客管理テーブル.管理No = 課題管理テーブル.管理No
ORDER BY 課題管理テーブル.管理No;
ではどうですか。これを新規クエリをSQLビューにして
張り付けてみてください。
ご回答ありがとうございます。
具体的な解決法をご教示下さいまして誠にありがとうございます!
さっそくやってみたのですが、クエリのデータシートビューで確認してみますと、
既存のレコードが表示されておらず、空欄の新規レコードが1行表示されてるだけです。
私のやり方がおかしいのでしょうか・・・
顧客管理テーブルの「管理No」は数値型で主キーを設定しています。
課題管理テーブルにも「管理No」(数値型)※主キー無しを追加しました。(管理Noのレコードはブランクのままです)
新規クエリのSQLビューで、SQL文を貼り付けました。
デザインビューで見ますと、「管理No」フィールド同士が結合されていました。
ここまでは良いように思うのですが、データシートビューにしますと何もレコードが無いのです。
空欄の新規レコードはあるので、入力等の編集は出来るようですが、それぞれのテーブルにあるレコードが表示されません。
>たとえば管理Noが00001の徳川家康が複数の課題を持っていても表示されます
とありますが、管理Noは数値型なので、「00001」ではなく「1」です。
課題管理テーブルの「課題No」フィールドがテキスト型で、「00001」となります。
このあたりに何か解決のヒントがあるのでしょうか・・・?
もしくは、課題管理テーブルの「管理No」(数値型)※主キー無しは、レコードがブランクのままだとまずいでしょうか?
No.2
- 回答日時:
「課題管理テーブル」に「管理No」を追加し、フィールドの仕様を
「顧客管理テーブル」の「管理No」と同じにします。
「課題管理テーブル」には主キーを設定しません。
クエリを以下のように設定します。
SELECT 課題管理テーブル.管理No, 顧客管理テーブル.姓, 顧客管理テーブル.名, 課題管理テー
ブル.課題No, 課題管理テーブル.課題名, 課題管理テーブル.仕掛り, 課題管理テーブル.済み,
課題管理テーブル.次回予定
FROM 顧客管理テーブル INNER JOIN 課題管理テーブル ON 顧客管理テーブル.管理No = 課題管
理テーブル.管理No
ORDER BY 課題管理テーブル.管理No;
これで、たとえば管理Noが00001の徳川家康が複数の
課題を持っていても表示されます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Accessで選択クエリから元テーブルを編集したい
Access(アクセス)
-
Accessのクエリでデータの入力ができません
Access(アクセス)
-
Accessでコードを入れると名前がでるようにしたい
Access(アクセス)
-
-
4
Accessのマクロでモジュールを実行させたい。
Access(アクセス)
-
5
クエリのデータをテーブルに入れたい
Access(アクセス)
-
6
ACCESS 「パラメータの入力」を消したい!!
Access(アクセス)
-
7
Accessで別テーブルの値をフォームに表示したい
その他(データベース)
-
8
ACCESS クエリの抽出条件に他のテーブルの値を参照する方法
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
2つのテーブルに共通するレコ...
-
ACCESSユニオンクエリから新テ...
-
Acccessで2つのテーブルから1...
-
AccessのフィールドにIPアドレ...
-
Accessのテーブルで、リンク?...
-
Access クエリが入力できない
-
ACCESSにおけるレコードの足し...
-
Accessのリンクされたテーブル...
-
テーブルに表示されているもの...
-
[Access]テーブルに同じデータ...
-
accessエラー回避について
-
Access2007を同時に複数名で使...
-
ACCESS テーブル同士の照合
-
access ODBCリンクテーブルの...
-
AccessVBAで任意の複数リンクテ...
-
クエリで編集できるようにした...
-
アクセス 部分一致の抽出
-
ACCESSのODBCリンクテーブルの...
-
Access システム改築の質問
-
レコード数のカウント
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2つのテーブルに共通するレコ...
-
最新日のデータのみ抽出するク...
-
ACCESSユニオンクエリから新テ...
-
テーブルに表示されているもの...
-
Acccessで2つのテーブルから1...
-
Accessのリンクされたテーブル...
-
access vbaにてテンポラリーテ...
-
ACCESSでテーブルをコピーしよ...
-
Accessのテーブルで、リンク?...
-
Accessでリストの並び順を変更...
-
ACCESS テーブルを見比...
-
ACCESS テーブルを見比...
-
アクセス2016 チェックボックス...
-
アクセス 部分一致の抽出
-
Microsoft Access 「Form」のボ...
-
ACCESSのODBCリンクテーブルの...
-
AccessVBAで任意の複数リンクテ...
-
クエリで同一テーブルの複数回...
-
AccessでのリンクテーブルとADO...
-
アクセスVBA現在開いている全て...
おすすめ情報