- 締切済み
Accessのエラー (いくつかあります・・・)
アクセスでデータを入力したのですが、なぜか下記のエラーがでます… *作成したアクセスデータ* テーブル 項目AのCDと項目A、項目BのCDと項目B、項目CのCDと項目C、項目A~CのCDとその他繰り返し入力しないデータ の合計4つのテーブル それらすべてをリレーションでつないでます クエリ 全項目入りのテーブルを元に作ったもののみ フォーム クエリを元にウィザードを使って作成 *エラー* (1)クエリを作った時に、1つでもCDが入力されてないフィールドがあるとその行全体が表示されなくなる (CDを入力したら表示されますし、テーブルではCDが入ってなくても全て表示されてます) (2)フォームで新たにデータを入力しようとしても一切入力できないし、変更もできない時がある (使用可能等の項目は一切触っていません) (3)フォームでCDが入ってる箇所を未入力にしたままでは保存できずに、「CDと値が一致しません」?のようなエラーメッセージがでる (すみません、エラーメッセージはうろ覚えです…) (4)なぜか昇順で番号を並べ替えていたのに、フォームでデータを追加したら、昇順が反映されずに「1,11,2…」のようにフォームのみ表示される (テーブル・クエリは反映されています) このエラーの原因がわかる方ぜひ教えてください!! よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- cdsdasds
- ベストアンサー率52% (114/217)
えっと、この手のことを聞くのであれば、少なくともAccessが何かつまり、2000とか2003とか2007とかを書くようにしてください。 また、できるだけテーブルとリレーションは端折らずに、どうしているのかが分かるように説明してください(テーブルとリレーションをコピペしろと言っているのではありません)。 CDって何の略ですか?(素にわからないです) >(1)クエリを作った時に、1つでもCDが入力されてないフィールドがあるとその行全体が表示されなくなる (CDを入力したら表示されますし、テーブルではCDが入ってなくても全て表示されてます) これだけでは何とも。 クエリというのは「問い合わせ」を意味します。つまり、「何とかテーブルのデータから、こういう条件のデータを取り出して、こう並べ替えて」といった「問い合わせ」を行い、その結果を表示するのが役目です。 例えば、 CD番号 CD名 1 愛唄 2 喜びの歌 3 睡蓮花 千の風になって というテーブルがあったとしましょう(CD番号は数値型で主キーではない)。テーブル上では「千の風になって」はデータとしてあります。 これをそのまま表示するクエリは、多くの場合「テーブルからCD番号を取り出し、それに対応するCD名をCD番号の隣に並べる、表示はCD番号の順番で行う」という「問い合わせ」の結果です。 この場合、CD番号を取り出して行きますから、CD番号のない「千の風になって」は表示されないということになります。 エラーではなくて、「問い合わせ」の結果の正しい表現です。 もし、CD番号がなくてもCD番号がないままで、CD名を表示するクエリが必要なら、そのような「問い合わせ」を作ってあげる必要があります。 同様に表示に必要なデータがないレコードはそれ自体が表示されないのは正しい結果であるように思われます。 >(2)フォームで新たにデータを入力しようとしても一切入力できないし、変更もできない時がある (使用可能等の項目は一切触っていません) これだけでは何とも。 ただ、テーブルからクエリを作り、そのクエリを基にフォームを作った場合と、テーブルから直接フォームを作った場合、できる物の動作が違うということはご承知おきください。 つまり、テーブルはデータを置くところ(データ本体)ですから、フォームという「見た目」を介して、データが入力された場合、データを格納することができます。 これに対して、クエリは上で述べたように「問い合わせ」の結果ですから、変更を受け入れる余地がありません。 上の例でいえば、テーブルの「見た目」であるフォームの場合、たとえばcd番号 5 CD名「大切なもの」というデータを受け入れることができますが、クエリの「見た目」であるフォームの場合、すでにCD番号1から4の一覧表を問い合わせの結果として表示しているので、そこに問い合わせの際にはなかったデータを入力しようとしても、当然できないのです。 つまり、エラーではなく正しい結果なのです。 データを入力したいのであれば、基本としてはテーブルに入力できるようにフォームを作らないといけないのです。 >(3)フォームでCDが入ってる箇所を未入力にしたままでは保存できずに、「CDと値が一致しません」?のようなエラーメッセージがでる (すみません、エラーメッセージはうろ覚えです…) おそらく、そのデータが未入力を受付けないデータ型あるいは主キーとして設定されているからだと思われます。 未入力の場合"NULL"と呼ばれる特殊な記号(文字)がそのデータに入ります。オートナンバー型の場合、この記号をデータとして受け付けていないので、入力されたデータは(設計時に予定されているデータの内容と)値が一致しないとエラーが出るのです。 これは正しい動作です。 その箇所のデータを未入力のままにしておきたいのであれば、テーブルでフィールドをデザインした際に、未入力を受け付けるデータ型にする必要があります。 >(4)なぜか昇順で番号を並べ替えていたのに、フォームでデータを追加したら、昇順が反映されずに「1,11,2…」のようにフォームのみ表示される (テーブル・クエリは反映されています) これだけではなんともわかりかねます。 無理して考えれば ・その並び順は数値の昇順ではなく、文字の昇順の場合正しいように思われますから、質問者がお作りなったという表の中に、当該データのデータ型がテキスト型のものがあり、フォームではそのテーブルのデータが表示されている。 ・データの入力中なのでソートされずにそのまま表示されている。 とかが考えられます。 いずれにしろ、エラーではなく正しい結果ではないのかと思われます。 質問者様のおやりになりたいこと、実際にやったことがはっきりしないことにはこれ以上回答するのは難しいように思われます。 また、別の回答者が厳しいことをおっしゃっていますが、あながち的外れというわけではないのです。 データベースはワープロ、表計算等と異なり、今までの作業や経験のアナロジーから操作することが困難なソフトです。 まずは正しい概念の理解が必要です。 遠回りとお思いにならず、テーブル、クエリ、、フォームといった言葉の意味するところを学ばれ、リレーショナル型のデータベースで複数のテーブルを作る意味、どうしてそのフィールドでリレーションを作るのかということを理解され、その上で1つのテーブルを例にクエリを色々お作りになったり、それをフォームで見た目を変えてみたりして、個別の内容を理解され、その上で複数のテーブルからなる簡単なデータベースを御作りになり、クエリで複数のテーブルからデータを取り出し組み合わせる方法を学ばれることをお勧めします。 お使いのAccessのバージョンがわかりませんので、お勧めの講習ページなどはご紹介できませんが、GOOGLE等で検索すればしかるべきページが見つかるものと思います。 入門レベルであれば早ければ半日で終わるでしょう。 あせらずに着実な一歩を歩まれますようにお勧めいたします。
- CHRONOS_0
- ベストアンサー率54% (457/838)
すべてのエラーはAccessの基本が分かっていないことが原因です テーブルの作り方、主キーの意義、リレーションシップ、参照整合性、クエリ 等についてもう一度入門書をお読みください (入門書で言えば前半あるいは前の三分の一ぐらいに書かれている事柄です) この辺をおろそかにして先に進んでもAccessは理解できません
お礼
一応したつもりですが、もう1度見てみます。 ありがとうございました。
お礼
質問の仕方が悪かった様ですみません・・・ まだ初めて1週間程度ですが、一応テキストを使ってテーブル・クエリ・フォーム・リレーションシップについて勉強はしたんですけど、もう1度見てみます。 丁寧に説明して下さってありがとうございました。 CDはコードの略です・・・ うっかりそのまま打ってしまいました、すみません。