dポイントプレゼントキャンペーン実施中!

VB2008 で商品マスタメンテ プログラムの開発をしています。
入力画面に入力された各項目で、MDBの商品マスタテーブルを更新するのですが、
入力されなかった項目にDBNULLをセットする場合のSQL文の記述方法を教えて下さい。

例)商品マスタの項目: 商品コード(テキストタイプ)
               商品名称(テキストタイプ)
               商品名カナ(テキストタイプ)
               入数(数値タイプ)

画面から入力された内容を退避する一時ワークエリア
SyohinCD As String
SyohinNM As String
SyohinKN As String
Irisu As Object   とし、入力内容をセットしています。

  ここで、入数が入力されなかった場合、
SQL = ""
SQL = SQL & "UPDATE 商品マスタテーブル SET 商品名称 = ’ " & SyohinNM & "’,"
SQL = SQL & " 商品名カナ = ’ " & SyohinKN & "’,"
SQL = SQL & " 入数 = " & Irisu & ","
  SQL = SQL & " WHERE 商品コード = ’" & SyohinCD & "’"
  SQL = SQL & " ;"

とすると、入数 のところで「構文エラー」になってしまいます。
( ' (シングルクォーテーション)は、見やすさのために全角(’)にしています。)

   入数は 0(ゼロ)と DBNULL を区別したいので、入力がない場合は、DBNULL を
   セットしたいのですが、どのように記述すれば良いでしょうか。

   おわかりの方がおられましたら、教えていただきたく、よろしくお願い致します。

A 回答 (3件)

SQL = SQL & " 入数 = null," とすればよいのでは?


(mdb上で値要求がいいえになっている必要はあると思います)
    • good
    • 2
この回答へのお礼

回答ありがとうございます。
Irisu As Object を Irisu As String に変更し、
画面「入数」に入力があった場合は、
SQL = SQL & " 入数 = " & Irisu & ","
未入力の場合は、
SQL = SQL & " 入数 = null,"
でできました。ありがとうございました。

お礼日時:2011/05/16 16:31

こんにちは



.netだと
DBNULL.valueを設定すればOKですけど。

NULLを設定すること自体は賛否両論がありますね。
    • good
    • 1
この回答へのお礼

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

DBNULL.value と記述すると、SQL 実行エラーになってしましました。 null でうまく行きました。

お礼日時:2011/05/16 16:35

> Irisu As Object


入力はどんな型で行なわれるのですか?テキストボックスなら
文字列型です。Object は使わないで下さい。

「数値に変換できない文字」を入力された場合を考慮して下さい。

そののち、数値に変換できるか判定して、If文で場合わけして
下さい。
    • good
    • 0
この回答へのお礼

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

入力はテキストボックスです。
Object ではなく String に変更しました。
入力チェックは前のステップでやっているので、
ここでは整合性のあるデータが保証されています。

お礼日時:2011/05/16 16:34

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

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


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