• ベストアンサー

Accessで数値型にNULLをInsertするとエラー

AccessVBAで数値型にNULLをInsertするとエラー(3134)になりますが、 その項目は必須項目にはしたくないので、 Insertする前にNULLが飛んできます。 そういった場合は、NULLかどうか判定して明示的に0をセットしてからInsertする方法しかないでしょうか。 あくまで取扱う情報は数値なので、数値型にしたいのですが、 NULLの可能性もある場合はテキスト型にするのが一般的なのでしょうか。 何か良い方法がありましたら教えてください。 尚、まだDBにはテストデータしか入っていないので、テーブルの変更は問題ありません。

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

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.2

> AccessVBAで数値型にNULLをInsertするとエラー(3134)になりますが、 エラー(3134)は「構文エラー」ですから テーブルの問題ではありません。  INSERT INTO テーブル ( テキスト項目, 数値項目 )  VALUES ('ABC', 100); のようになるべきところ、 数値項目に代入する値が NULL のため  VALUES ('ABC', ); になっているためでしょう。  VALUES ('ABC', NULL); になるように SQL を組み立ててください。 例)  Nz(Me.テキストボックス名,'Null') とか, あるいは、このような関数をかませるとか。 Function SQLNumber(Value As Variant) As String   If IsNumeric(Value) Then     SQLNumber = Value   Else     SQLNumber = "'Null'"   End If End Function

noname#258812
質問者

お礼

標準モジュールで関数を用意してNullが飛んできたら明示的にNullをセットするようにしてエラーが出なくなりました。 ありがとうございます。

その他の回答 (1)

回答No.1

テーブルの定義で、  ・ 「値要求」が「はい」になっていませんか?  ・ 主キーにしていませんか?

noname#258812
質問者

補足

回答ありがとうございます >テーブルの定義で、 > ・ 「値要求」が「はい」になっていませんか? 「いいえ」になっています > ・ 主キーにしていませんか? 主キーにしていません テーブル定義で規定値をNullにしても同じエラー(3134)が出ます