- ベストアンサー
INSERT INTOで数値型にNull代入
- フォームのcmb性別を選択せず登録ボタンを押してINSERTするとエラーになる場合がある。
- 性別フィールドは必須項目にせず選択しない時は空白でレコードに追加にしたい。
- INSERT文の実行前に数値型フィールドにNullを代入することはできない。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>& " ,'" & Nz(Me!cmb性別, Null ).Value & "'" _ & " ,'" & Nz(Me!cmb性別.Value, Null) & "'" _ では?
その他の回答 (3)
- piroin654
- ベストアンサー率75% (692/917)
No2です。確認のために、IF文の前に、 If IsNull(Me!cmb性別) Then If MsgBox("性別が選択されていません。このまま登録しますか", vbYesNo) = vbNo Then Exit Sub End If End If を入れて誤登記を防ぐということも必要かも しれません。
お礼
説明が足りずに申し訳ありません! 顧客登録で個人の場合は性別を選択し登録を行うのですが、法人の場合はcmb性別を(フォーム上非表示)にして選択せずに登録を行いたいのです。 他にも 顧客コードを数値型で管理したく、フィールドに「紹介者」と言う項目がありまして、 ここに顧客コードを入れたいのですが、紹介者がいない場合は空白で登録したいのですが・・・ 過去ログで調べ、 & " ,'" & Nz(Me!cmb性別, Null ).Value & "'" _ などやってみましたが、うまく行きません。 Function などでNullをセットするなどの過去ログがありましたが、これはかなり難易度の高い作業なのでしょうか? アドバイス宜しくお願いいたします。
- piroin654
- ベストアンサー率75% (692/917)
cmb性別で選択されている場合といない場合を振り分けて、 If Not IsNull(Me!cmb性別) Then strSQL = "INSERT INTO T顧客情報" _ & " (顧客コード" _ & " ,顧客名" _ & " ,性別)" strSQL = strSQL _ & "VALUES (" & Me!txt顧客コード.Value & "" _ & " ,'" & Me!txt顧客名.Value & "'" _ & " ,'" & Me!cmb性別.Value & "')" Else strSQL = "INSERT INTO T顧客情報" _ & " (顧客コード" _ & " ,顧客名)" strSQL = strSQL _ & "VALUES (" & Me!txt顧客コード.Value & "" _ & " ,'" & Me!txt顧客名.Value & "')" End If adoCN.BeginTrans adoCN.Execute strSQL のように、SQL文にcmb性別のデータを含めるか 含めないかにしてみては?
お礼
毎回お世話になります! 今回のフィールドは50行ほどありましてIf~Else~End Ifですとかなり長くなってしまいますので、 他の方法を考えたいと思います。 ありがとうございます。
- Hayashi_Trek
- ベストアンサー率44% (366/818)
テーブルのフィールドのプロパティを編集する。 「値要求」がNULLの禁止/許可を示します。
お礼
返答ありがとうございます! テーブルの値要求は「いいえ」になっています。 テキスト型か既定値を「0」にすればエラーは回避できるのですが・・・ 何とか数値型のままNullでもエラーを回避し追加する方法は無いでしょうか、 お力添えよろしくお願いいたします。
お礼
早急なレスありがとうございます! >& " ,'" & Nz(Me!cmb性別.Value, Null) & "'" _ 試させて頂いたのですが結果は同じでした・・・ & " ,'" & Null & "'" _ではエラー & " ,'" & 0 & "'" _では追加出来るので、やはり数値型にはNull代入は不可能なのでしょうか? そうなると、数値型で空白にしたい場合Nullに代用できるものはありますでしょうか? 面倒な質問で申し訳ありません!御教授お願いいたします。