• ベストアンサー

インデックスまたは主キーには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