VBA内でのSQL文、めんどくさいですよね。
& でつなげなければいけない
データ型によって、#
や '
で囲まなければならない
未入力だったばあい Null に変換したりする必要がある
など・・・
最初のSQLの場合は、1件のレコードを追加するだけですので、自分なら、recordset.AddNew
を使いますね。
そうすると下記のようなコードですみます。
Dim rs As Dao.Recordset
Set rs = CurrentDb.OpenRecordset("T_依頼")
rs.AddNew
rs!依頼日 = Me.txt依頼日.Value
rs!依頼者 = Me.cmb依頼者.Value
rs!W_No = Me.txtW_No.Value
rs!W_Noロット = Me.txtW_Noロット.Value
rs!品名 = Me.txt品名.Value
rs!希望処置 = Me.cmb希望処置.Value
rs!補足説明 = Me.txt補足説明.Value
rs.Update
rs.Close
どうでしょうか。こちらの方がはるかにシンプルで読みやすいと思いませんか。
さらに、テキストボックス名をフィールド名と同じにしておけば、下記のようにいちいちフィールド名やテキストボックス名を記述する必要もなくなります。
Dim rs As DAO.Recordset, fld As DAO.Field
Set rs = CurrentDb.OpenRecordset("T_売上")
rs.AddNew
For Each fld In rs.Fields
fld.Value = Me(fld.Name).Value
Next
rs.Update
rs.Close
2つめのSQL文は下記のようになります。
テキストボックス名は、
フィールド名の後に1~10の数字を付加したものにしておいて、
Set rs = CurrentDb.OpenRecordset("T_依頼詳細")
Dim i As Long
For i = 1 To 10
If Not IsNull(Me("依頼理由" & i).Value) Then
rs.AddNew
For Each fld In rs.Fields
fld.Value = Me(fld.Name & i).Value
Next
rs.Update
End If
Next i
rs.Close
通報 ...