• 締切済み

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…」のようにフォームのみ表示される (テーブル・クエリは反映されています) このエラーの原因がわかる方ぜひ教えてください!! よろしくお願いします。

みんなの回答

  • cdsdasds
  • ベストアンサー率52% (114/217)
回答No.2

えっと、この手のことを聞くのであれば、少なくとも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等で検索すればしかるべきページが見つかるものと思います。 入門レベルであれば早ければ半日で終わるでしょう。 あせらずに着実な一歩を歩まれますようにお勧めいたします。

fairy192
質問者

お礼

質問の仕方が悪かった様ですみません・・・ まだ初めて1週間程度ですが、一応テキストを使ってテーブル・クエリ・フォーム・リレーションシップについて勉強はしたんですけど、もう1度見てみます。 丁寧に説明して下さってありがとうございました。 CDはコードの略です・・・ うっかりそのまま打ってしまいました、すみません。

  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.1

すべてのエラーはAccessの基本が分かっていないことが原因です テーブルの作り方、主キーの意義、リレーションシップ、参照整合性、クエリ 等についてもう一度入門書をお読みください (入門書で言えば前半あるいは前の三分の一ぐらいに書かれている事柄です) この辺をおろそかにして先に進んでもAccessは理解できません

fairy192
質問者

お礼

一応したつもりですが、もう1度見てみます。 ありがとうございました。

関連するQ&A

  • Access #エラーについて

    Access初心者です。 よろしくお願いいたします。 [前提]  テーブルA のIDに紐づけてクエリBの数値をクエリCで反映させたい。  〈詳細データ〉   ・テーブルA    [ID] [名称]       1   あ     2   い     3   う     4   え     5   お   ・クエリB    [ID] [数値]     2   10     3   20     5   40   ・クエリC    [ID]  [名称] [数値]     1    あ  #エラー     2    い   10     3    う    20     4    え  #エラー     5    お   40   ・”テーブルAの[ID]”の全レコードと”クエリBの[ID]”の同じ結合フィールドだけを含めてリレーションを行っている。    ・クエリCの算式: IIf(IsError([クエリB].[数値]),0,[クエリB].[数値])  [質問]    ・クエリCの『#エラー』部分を0にしたいのですが、何か良い方法はございませんでしょうか。   ・そもそも上記のロジックは無理がありますでしょうか。    アクセスはあまりいじったことがございません。ご回答いただけますと幸いです。   よろしくお願いいたします。

  • accessのクエリ

    こんにちわ。 いまaccess2000を使っています。 あるフォームのコントロールソースとして ある選択クエリを指定しました。 そのクエリは元になるトランザクションテーブルと それに関連するマスタテーブルから構成されています。 そこでこのフォームの詳細セクションでデータを入力すると, トランザクションテーブルにそのまま登録されるように なっていますが,なぜか関連するマスタにまでデータが 登録されてしまいます。 なおそのときはマスタの名称項目のみに登録され, コード項目には何も登録されません。 トランのみに反映しマスタには反映しないようにしたいのですが, どうすれば良いでしょうか? 教えてください。お願いします。

  • Accessのフォーム

    Access2003を使用しています。 テーブルまたはクエリを元に作成したフォームにはテーブル・クエリに入力されているデータが表示されますよね? それらのデータをフォームから変更出来ないようにする方法はありますか? データ自体を非表示(入力用フォーム)にするのではなく、既存のデータは表示されるけど変更は出来ないという状態にしたいです。 ちなみに新規入力は行えるようにしておきたいです。 よろしくお願いします。

  • Accessのフォームとレポート

    いつもお世話になっています。 Accessでフォームを作成する際に、テーブルに含まれてない新しい入力項目を作るとします。 その入力値をレポートに反映させる、となると、やっぱりクエリを切るしかないんでしょうか? わかりづらい質問かもしれませんが、よろしくお願いします。

  • Accessのフォームとテーブルについて教えてください。

    Access2003を使用しています。 既存のフォームAにフィールド3個を増やしました。 フォームAはテーブル(1)と連動していました。 追加したフィールドはテーブル(6)のものです。 ところがフォーム上で追加フィールドに入力が出来なくなりました。3フィールドのうち、ひとつはコンボボックスです。表示はされますが確定ができません。 フォームAのSQLステートメントではテーブル(1)・(6)以外にテーブル(2)・(3)・(4)・(5)が結合されています。 フォームAからするとテーブル(2)・(3)・(4)・(5)のデータはIDの名称を見るための参照用です。 テーブル(6)は、追加フィールドのコンボボックスが参照用で、他の2追加フィールドは、フォームから入力してテーブル(6)に反映させたいものです。 テーブル(6)の画面では入力できます。 フォーム上からは入力できません。 設定が何か欠けているからでしょうか? 他の質問では2つのテーブルをひとつのフォームにする場合は、クエリを別に設けた方がいいとなっています。フォームが出来上がっているので、できればクエリを設けずに行いたいのですが、よくない方法でしょうか? 手順なども踏まえて教えていただけると助かります。 よろしくお願いいたします。

  • アクセス 数値型にするとフォームの入力ができない

    お世話になります。色々調べたり、実験してみたのですが、分からない点があります。 簡単でいいので、可能性のある原因を教えてください。 アクセス2003です。 ■パターン1  フォームC の入力ができる テーブルA(主キーがオートナンバー型)、その他4つのテーブル(これら5つのテーブルは、参照整合性リレーションで結ぶ) →それらを元にクエリBを作る→クエリBを元にフォームC を作る ■パターン2  フォームC の入力ができない テーブルA(主キーが数値型)、その他4つのテーブル(これら5つのテーブルは、参照整合性リレーションで結ぶ) →それらを元にクエリBを作る→クエリBを元にフォームC を作る 簡単にいうと、テーブルのデータ型によって、入力可否が変わるのです。 なぜ、パターン2は、入力できないのか分かりません。 よろしくお願いします。

  • アクセス2000のテーブル・クエリーについて

    アクセス2000でテーブル1(データ入力済み)、テーブル2(データ未入力)、 テーブル3(データ未入力)、テーブル4(データ入力済み)の4つのテーブルを作成しました。クエリーを上記のテーブルから作成しました。テーブル1とテーブル4はデータが入力されているので、クエリーに反映されています。その後、テーブル2に入力した後、そのクエリーに反映されないのは、どうしてでしょうか。 初歩的なことだと思いますが、教えて下さい。

  • Access フォームやレポートを作成したあとの追加

    たびたびお世話になります。 質問(1) Access2000で作成したフォームやレポートで、 後からクエリ上に情報を追加して、 その追加分を反映したい場合はどのようにすればよろしいのでしょうか。 単にテキストボックス等で反映されるだけのデータならよいのですが、 表示順を昇順に設定したので、その昇順どおりに レポートやフォームでも表示されてほしいのです。 レポートやフォームを設定する時に、表示を優先する設定があると思うのですが、 あとからそういったことは出来るのでしょうか。 前に詳しい人に聞いたときは、もう一度作ったほうが早いといわれました。 しかし、時間的な問題でそれが出来ないのです。 お知恵をいただけますと大変助かります。 質問(2)それから、複数人で入力しているのですが 排他的設定をしていないのにも関わらず 排他的になっているので開けませんといったようなエラーが出ることがあります。 デザイン画面を開こうとすると、そうなるのは分かるのですが、 入力でもそういうことがあるのでしょうか。 基本的なことばかりで申し訳ありません。 宜しくお願い致します。

  • アクセスのフォーム単票形式の表示順番

    アクセスのフォームの単票形式で、表示順番をクエリの列名「順番」と同じに並び替えをしたいのですが、出来ません。 フォームのデザインビューの左上の■を右クリックしたプロパティで「データ」タブの「並び替え」で設定するのでしょうか?そこにクエリの列名が入力されていますが、票はその順番で表示されません。 クエリもテーブルも「順番」列の昇順で並び替えられています。 よろしくお願いいたします。

  • Access アクセスについて

    Accessでデータベースを作っています。 テーブル、クエリは下記のようになっており、リレーションシップで紐付けしてあります。 クエリからフォームを作成し、商品番号を入力することでマスタテーブルに登録されていれば自動で商品名等の情報が表示されるようになっています。(フォーム1) 商品番号を入力しカーソルが移動した時、マスタテーブルに該当する項目がなかった場合、マスタテーブルから作成した新規追加用のフォームが表示されるようになっています。(サブフォームではありません) 新規追加用フォームに商品名を入力し、閉じてもフォーム1の商品名の欄に反映されません。新規追加用フォームを閉じる時にVBAで”Requery”,”Refresh”もやってみましたがダメでした。商品番号を入力し直すと表示されます。 どうすれば自動で商品名が表示されるようになるか教えてください。 テーブル1(入力用) 1.ID(主キー) 2.商品番号 3.etc. テーブル2(マスタテーブル) 1.商品番号(主キー) 2.商品名 3.etc. クエリ 1.ID(テーブル1) 2.商品番号(テーブル1) 3.商品名(テーブル2) 4.etc.(テーブル2) 5.etc.(テーブル1)

専門家に質問してみよう