今、テーブルから取得した値を、別のテーブルに書き込む処理を行う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が止まってしまいます。
ポインタを合わせると、
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の箇所をどのように修正すればよいのか悩んでおります。
お力添えいただけますと幸いです。
よろしくお願い致します。
コメント(3件)
構文エラーのあるコードなんて話になんないよ。
「tSQL = tSQL & " db1.fields("値1").value & "'"」や
「tSQL = tSQL & ",'" IIf(CLng(db1.fields("値4").value) <= 10, "*", "") & "'"」
なんて文法的にありえないだろ。誤植なの?
気に入らなきゃスルーしろってことらしいけど、正直クソウザいわ。
人に質問する以前の問題だよ。
やめちまえってw
tSQL = tSQL & ",'" & IIf(CLng(db1.Fields("値4").Value) <= 10, "*", "") & "'"
でした。
失礼しました