Access VBAにてLong型にNullを入れるか、エラー番号94のNull不正エラーを回避したい


今、テーブルから取得した値を、別のテーブルに書き込む処理を行うVBAのプログラムがあります。
------------------------------
dim db1 as dao.recordset
dim hensu1 as long



tSQL = "insert into テーブルB("
tSQL = tSQL & " 社員ID,"
tSQL = tSQL & " 社員名,"
tSQL = tSQL & " 部署ID,"
tSQL = tSQL & " 部署名,"
tSQL = tSQL & " 在籍月数"  
tSQL = tSQL & " 入社年)"    
tSQL = tSQL & " values("
tSQL = tSQL & " db1.fields("値1").value & "'"
tSQL = tSQL & " db1.fields("値2").value & "'"
tSQL = tSQL & " db1.fields("値3").value
tSQL = tSQL & "," & hensu1
tSQL = tSQL & ",'" IIf(CLng(db1.fields("値4").value) <= 10, "*", "") & "'"
tSQL = ・・・ 



------------------------------  

ここで「tSQL = tSQL & ",'" IIf(CLng(db1.fields("値4").value) <= 10, "*", "") & "'"」の箇所の後にエラー処理に飛び、「Nullの使い方が不正です」とエラーメッセージが表示されてしまい、VBAが止まってしまいます。

回答の条件
  • 1人20回まで
  • 登録:
  • 終了:2021/02/21 21:00:06
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。
id:moon-fondu

ポインタを合わせると、


CLng(db1.fields("値4").value = Null


と、ありましたので。

CLng関数でlong型に変えるのがいけないのかな?と思いまして、

「tSQL = tSQL & ",'" IIf(db1.fields("値4").value <= 10, "*", "") & "'"」と、

関数を除いたところ。


今度は「エラー番号:3134 insert intoステートメントの構文エラーです。」というエラーが出てきてしまいました・・・。

こちらの記事 http://korikorikorikori.blog.fc2.com/blog-entry-15.html?sp にありますように判定文とかを加えないといけないのでしょうか…何とかテーブルにNullが入る(空欄)ならそれでも構いませんので、VBAを止めずに処理を進められるようにするには、SQLの箇所をどのように修正すればよいのか悩んでおります。

お力添えいただけますと幸いです。

よろしくお願い致します。

回答0件)

回答はまだありません

  • id:kaitesukkiri
    せめてコンパイルくらい通るコードを提示して質問しろよ。毎度毎度さー。
    構文エラーのあるコードなんて話になんないよ。

    「tSQL = tSQL & " db1.fields("値1").value & "'"」や
    「tSQL = tSQL & ",'" IIf(CLng(db1.fields("値4").value) <= 10, "*", "") & "'"」
    なんて文法的にありえないだろ。誤植なの?

    気に入らなきゃスルーしろってことらしいけど、正直クソウザいわ。
    人に質問する以前の問題だよ。
    やめちまえってw
  • id:moon-fondu
    すみません。確認します。
  • id:moon-fondu
    IIfの前の"&"が抜けておりました…。


    tSQL = tSQL & ",'" & IIf(CLng(db1.Fields("値4").Value) <= 10, "*", "") & "'"


    でした。
    失礼しました

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません