• ベストアンサー

インデックスまたは主キーにはnull値を使用できません

こんにちは。 アクセス初心者です。 練習のため給与管理をAccessで作っています。 単純なクエリを基に入力フォームを作りましたが (1)新規データを入力すると 「インデックスまたは主キーにはnull値を使用できません」 というエラーが出ます。 すべてのフィールドにデータは入っているのですが・・。 確認すべき場所があれば教えてください。 (2)またフォームに、1列目が会社リスト、2列目が会社名というコンボボックスを作りました。 コンボボックスで選択後、フォームで表示されるのは会社名、 テーブルに入力されるのは会社リストという設定はできますか? どうぞ宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
noname#79209
noname#79209
回答No.3

> 単純なクエリを基に入力フォームを作りましたが > フォームを非連結とはどのようにするのでしょうか? 「単純なクエリ」と言っておられますが、複数のテーブルをジョインしたクエリですか? フォームを非連結にするのは、レコードソースプロパティにあるクエリ名をクリアします。 これでフォームとクエリ(あるいはテーブル)とのリンクが切れます。 レコードの追加はVBAで行います。 > コンボボックスで選択後、フォームで表示されるのは会社名、 > テーブルに入力されるのは会社リストという設定はできますか? コンボボックスの 「連結列」プロパティを「1」 「列数」は「2」 「列幅」は「0cm;1.5cm」(1.5cmは会社名が入る幅に調整してください) ただしこれだと、プルダウンされたときも会社名しか表示されないので 「列幅」を「1cm;1.5cm」、「幅」を列幅の合計以上にしてください。 普通は、最初の方法を採ると思います。会社のコードなど覚える必要はないと思いますので。

その他の回答 (2)

noname#79209
noname#79209
回答No.2

フォームを非連結にしては? テーブルに連結してしまっているから、新規レコードを追加すると インデックスあるいは主キーに設定されているフィールドにNULL値が 入ってしまい、エラーが出るのです。

yukipong
質問者

補足

ありがとうございます。 フォームを非連結とはどのようにするのでしょうか? プロパティで探してみましたが見当たりません。。

  • ganbaro
  • ベストアンサー率45% (43/94)
回答No.1

(1)利用しているテーブルのデザインで、インデックスが はい になっている項目をチェックしてください また主キーになっている項目も 特にこの項目では値がNULLは許されていません。 主キーでない場合は、空文字列の許可が なし になっていないかどうか なっていれば あり にする。 インデックス項目は、基本的にNULLを使わない方がよいと思います。 多分yukipongさんはインデックス項目に値を設定されていないのだと思います。 調べてみてください (2)コンボボックスは、基本として参照になると思います。 フォームデザインの指定のコンボボックスのプロパティで列幅をしていすれば表示できます。 1列目からカンマ区切りで幅を指定します(通常cm) この例では 0,5 1列目は表示されない 2列目はリスト幅で最初表示されます。 コンボボックスのプルダウン時は5cmで一覧が表示されます。 また、データの処理では通常見えていない1列目が使われます (連結列 通常1) 試してください

yukipong
質問者

補足

ありがとうございます。 (1)に関してですが、主キーですが、オートナンバーになっているので NULL値になることはないと思います。 他にはインデックスはついていないのですが…

関連するQ&A

  • ACCESSのクエリの抽出

    ACCESS2003を使っています。フォームのコンボボックスに入っているデータを見てクエリで抽出したいと思っています。 フォームのコンボボックスにデータが入っているときは、そのデータで抽出を行い、nullのときは抽出をやめてすべてのデータを表示させたいです。 抽出項目には、null値はありません。 クエリの抽出欄に下記の式を入れましたがうまくいきません。 IIf(IsNull([Forms]![フォーム名]![コンボボックス名])=true , Is Not Null , [Forms]![フォーム名]![コンボボックス名]) コンボボックスにデータが入っている場合は、抽出はうまくいくのですが、nullのときは、何も表示されません。 どこか式が違っているのでしょうか? よろしくお願いします。

  • ACCESS97のコンボボックスについて

    入社して、名刺を貰う機会が多い為、名刺を管理するものを初歩的な参考書を見てACCESS97で作りたいと思います。テーブルで数名の氏名・会社名・部署名・役職・住所を作りました。良く分からなかったので、この1つのテーブルを基にパラメータを使って検索する「検索用画面」と新しいレコードが表示される「新規入力画面」をクエリーとフォームを別々に作りました。検索用画面は、これで良しとします。しかし、新規入力画面は、同会社名が多いので、コンボボックスを作り今まで登録したものからも選べる様にもしたいです。新しいレコードでは、表示されませんが、▼で前のレコード(既に入力してあるデータ)に戻ると、エラーメッセージで「このフィールドに入力した値が不正です。例えば、数値型のフィールドに文字列を入力しました。」と出てきてしまいます。コンボボックスいうのは、コンボボックスウィザードで「テーブルまたはクエリーを表示する」を選び、表示させたいものを選ぶだけでは、いけないのでしょうか・・。くだらない質問で申し訳ありませんが、回答の方宜しくお願いします。

  • accessで null値のあるデータを追加したい

    もとエクセルのデータで、フィールドにnullのところがあるデータをアクセスに追加したいのですが、 エクセルをアクセスにインポートはできるんですが、 それを追加しようとすると、 追加クエリでエラーが出ます。 どうすればいいのでしょうか? そのフィールドはインデックスはつけてません。 空文字列を はい にしてもだめでした。 access2000 windows2000

  • インディックスまたは主キーには、Null値を使用で

    Access2007です。 主キー | フィールド名| データ型 .... |フィールドサイズ ------|-- ---------|----------|---------------- ○....... | 担当者CD ..... | テキスト型 | .....3 ------|------------|-----------|---------------- .............. | 担当者名 ...... |テキスト型 .. | 20 以上の設定ですが、 「インディックスまたは主キーには、Null値を使用できません。」 とでて主キーが設定できません!?  なぜできないのでしょうか?  宜しくお願い致します。

  • クエリの検索条件をフォームで指定したいのです

    OS winXP Access2003です よろしくご指南お願いいたします。 フォームのコンボボックスの選択で あり なしを選択してクエリの抽出条件のフィールドのデーターのある物無い物を分けて表示させたいのですがうまくいきません   フォームのコンボボックスの選択で あり の時  フィールドの抽出条件 値  ‹› ""   フォームのコンボボックスの選択で なし の時  フィールドの抽出条件 値  Is Null をそれぞれ入れたいのですが どのようにすれば良いのか ご指南ください

  • access,フォームで最新のコンボ内容が反映不可

    フォーム入力時、顧客や商品データが無い場合、フォームを開いたままで、そのテーブルを開き、顧客や商品データを入力、閉じます。 フォームでは、顧客や商品データはコンボボックスで選ぶ用にしていますが、それにテーブルに新たに入力したそのデータが出てきません。 フィールド→更新、やフォームを閉じ開きすれば、現れます。 これを、例えばボタンを作成し、テーブルにデータ追加後、ワンクリックで、フォームのコンボボックスに新入力データを反映させるにはどうすれば良いのでしょうか(SQLの方が良いか?)。 また、フォームのコンボボックスのデータは、フォームを開いた時のテーブルやクエリのデータそのままで、コンボボックス選択時に再読み込みなどはしないのでしょうか? 正確にはコンボボックスのデータは順の関係でクエリで整順させたものです。 access2000でwindows2000です。 宜しくお願いいたします。

  • accessでコンボボックスの内容を変える方法を教えて下さい。

    accessのフォームにてデータ入力画面を作成しています。 フィールド入力にコンボボックスを用いてリスト選択にしたいのですが、リストの量が膨大になってしまう為、その前のフィールド値によってリスト用テーブルを切り換えて使いたいと思っています。簡単に出来る方法があれば教えて下さい。

  • コンボボックスの値リストをクエリーでも表示する方法?教えて

    フォームにコンボボックスを作ったのですが、コンボボックスの値リストを表示するフィールドをクエリのフィールドでもリストを表示選択できるようにする方法を教えていただけませんか?

  • Access 「主キーにはnull値を~」のエラー

    こんにちは。閲覧ありがとうございます。 私はAccess初心者です。 勉強と実用をかねて個人用の「家計簿」をWindows7のAccess2010で作成しております。フォームを使用し、費目を記録して、ゆくゆくは集計なども行いたいと考えています。 いくつかの失敗に当たりながらどうにか形はできたのですが 『インデックスまたは主キーには、null値を使用できません。』 というエラーが出てきてしまい、これがどうしても解決できないでいます。 初心者があやふやな言葉を並べるより、現物を見ていただいた方が早いと思うので、以下に私が作成中の「家計簿rev2.accdb」をアップロードしておきました。 http://www1.axfc.net/uploader/so/2884464.zip (稚拙で見難いことこの上ないかもしれませんが、初心者ゆえご容赦ください・・・) 仕様としましては、フォームの「Fmain家計簿DB」に、「レシートNo、購入日、種類ID、費目、値段、個数、店舗ID、その他」と入力して、最後に次のレコードに移れば、レコードが一つ記録されるといった具合(のはず)です。 各テーブルの主キー以外には「空文字列の許可を"はい"」「値要求を"いいえ"」「インデックスを"いいえ"」に設定してあります。 オートナンバー型を使用しているのはテーブルの「Tmain家計簿DB」の主キーのみです。 また、「フィールドとキーが一致しているレコードをテーブルで探すことができません」というエラーが出るのを回避するため、こちらの質問を参考にさせてもらい外部結合の設定をしてあります。 (http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1368686318) そして、フォームに想定通りのデータを入力すると『インデックスまたは主キーには~』のエラーが出てしまいます。 せめてどこにnull値が入っててエラーが出てるのかを表示してくれたらいいのですが・・・ 以上になります。長文お読みいただきありがとうございました。 こんな簡単なdbの作成でお手上げ状態になるとは情けない限りです・・・ どなたか、『インデックスまたは主キーには、null値を使用できません。』の解決策をご教示いただけるとありがたいです。 よろしくお願いいたします。

  • [Access2003]コンボボックスのプロパティの「値集合タイプ」について

    [Access2003]コンボボックスのプロパティの「値集合タイプ」について 今、参考書でAccess2003のフォームのコントロールの作成について勉強しています。『コンボボックスのプロパティ』の「すべて」の中の「値集合タイプ」の・・・・ 「テーブル/クエリ」、「値リスト」、「フィールドリスト」は、少しの説明だけで理解できなかったです。 Access初心者なので簡潔に「テーブル/クエリ」、「値リスト」、「フィールドリスト」を教えてくださったら助かります。

専門家に質問してみよう