- ベストアンサー
Accessで数値型にNULLをInsertするとエラー
AccessVBAで数値型にNULLをInsertするとエラー(3134)になりますが、 その項目は必須項目にはしたくないので、 Insertする前にNULLが飛んできます。 そういった場合は、NULLかどうか判定して明示的に0をセットしてからInsertする方法しかないでしょうか。 あくまで取扱う情報は数値なので、数値型にしたいのですが、 NULLの可能性もある場合はテキスト型にするのが一般的なのでしょうか。 何か良い方法がありましたら教えてください。 尚、まだDBにはテストデータしか入っていないので、テーブルの変更は問題ありません。
- みんなの回答 (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
その他の回答 (1)
- ogohnohito
- ベストアンサー率35% (5/14)
テーブルの定義で、 ・ 「値要求」が「はい」になっていませんか? ・ 主キーにしていませんか?
補足
回答ありがとうございます >テーブルの定義で、 > ・ 「値要求」が「はい」になっていませんか? 「いいえ」になっています > ・ 主キーにしていませんか? 主キーにしていません テーブル定義で規定値をNullにしても同じエラー(3134)が出ます
お礼
標準モジュールで関数を用意してNullが飛んできたら明示的にNullをセットするようにしてエラーが出なくなりました。 ありがとうございます。