• ベストアンサー

NULL文字のINSERT

こんにちは。 SQLServer初心者です。 Access VBAで SQLServerから抽出したデータをDBにINSERT しようとしてるのですが、抽出した項目にNULLデータがあるので エラーになってしまいます。 どのように回避すればよろしいでしょうか? ISNULL関数を使えば回避できるのでしょうか? たとえば以下のようなINSERT分を実行したいのですが、 顧客名_漢字のフィールドにはNULL文字が入ってる場合があるとします。 よろしくお願い致します。 strSQL2 = "" strSQL2 = strSQL2 & " INSERT INTO NORSE_TMP_DATA ( " strSQL2 = strSQL2 & " ポート名" strSQL2 = strSQL2 & ", 顧客名_漢字" strSQL2 = strSQL2 & ", 顧客名_カナ" strSQL2 = strSQL2 & ", 契約状態" strSQL2 = strSQL2 & ", 契約番号" strSQL2 = strSQL2 & ", 契約枝番号" strSQL2 = strSQL2 & ", 顧客番号" strSQL2 = strSQL2 & " VALUES (" strSQL2 = strSQL2 & " '" & rs.Fields("ポート名").Value & "'" strSQL2 = strSQL2 & ", '" & rs.Fields("顧客名_漢字").Value & "'" strSQL2 = strSQL2 & ",'" & rs.Fields("顧客名_カナ").Value & "'" strSQL2 = strSQL2 & ",'" & rs.Fields("契約状態").Value & "'" strSQL2 = strSQL2 & "," & rs.Fields("契約番号").Value strSQL2 = strSQL2 & "," & rs.Fields("契約枝番号").Value strSQL2 = strSQL2 & "," & rs.Fields("顧客番号").Value strSQL2 = strSQL2 & " )"

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

  • ベストアンサー
noname#25358
noname#25358
回答No.1

 項目がヌルの場合、'wwwww' の形ではなく、単に NULL と出力します。  このときの判定は、VB側で IsNull で判定するのがもっとも簡単だと思います。

rariko
質問者

お礼

ありがとうございました。 無事対応できました。

その他の回答 (1)

  • STICKY2006
  • ベストアンサー率29% (1536/5269)
回答No.2

こんにゃくは。 もう、NULLについての方法は出ているようなので、別の考え方?だけ参考までに。。。 >>どのように回避すればいいのか。 一番簡単に思いつく~とすれば、「NULLを入れさせない。」ですよね。 入れさせなきゃ悩む必要ないですから-w- 入れさせない方法として考え付くものとして(?) ・ユーザーに入れさせない。 ・入れてもNULLにさせない。 かな。 ユーザーに入れさせない。としたら、入力時に判定させて、必ず何かを入力しなければいけないようにメッセージを出してやったりすればいいですよね。 でなければ、ユーザーが入れても、システムで無理矢理、スペース1つ入れてやるとか、何かすればOKですよね。 で、個人的な意見ですが、NULLは非常に好きじゃないです(笑 NULLのためにわざわざ処理考えなきゃいけないときとかありますしねぇ。。。 検索条件も、NULLがあるがために2回やったり。。。(_。。_ できることなら使いたくないって思っているので、自分で何か考えるときは、できるだけNULLを使わないで済む方法。 を考えながらやってますよ。 まぁ、参考までにー。です。

rariko
質問者

お礼

そうですね~。 NULL文字扱いは非常に面倒くさいですよね。 ご意見ありがとうございました。

関連するQ&A