教えて!gooグレードポイントがdポイントに!

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

尚、まだDBにはテストデータしか入っていないので、テーブルの変更は問題ありません。

教えて!goo グレード

A 回答 (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
    • good
    • 2
この回答へのお礼

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

お礼日時:2008/07/07 21:58

テーブルの定義で、


 ・ 「値要求」が「はい」になっていませんか?
 ・ 主キーにしていませんか?

この回答への補足

回答ありがとうございます

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

> ・ 主キーにしていませんか?
主キーにしていません

テーブル定義で規定値をNullにしても同じエラー(3134)が出ます

補足日時:2008/07/06 19:02
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

教えて!goo グレード

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング