Вы работаете в Access, поэтому лучше использовать DAO, как он есть. Рассмотрим:
Private Sub CommandButton1_Click()
Dim sSQL As String
sSQL = "INSERT INTO Jun_pre " _
& "(ProductName,DESCRIPTION,SKU,MT,(mt),MRP,Remark," _
& "no_of_units_in_a_case) VALUES "
& "(""aa"",""bb"",""test"",""testUnit"",1,2,Null,3,Null,4);"
CurrentDB.Execute sSQL, dbFailOnError
End Sub
Против:
Private Sub CommandButton1_Click()
Dim cn As New ADODB.Connection
Dim strSql As String
Dim lngKt As Long
Dim dbConnectStr As String
Dim Catalog As Object
Dim cnt As ADODB.Connection
Dim dbPath As String
''You do not need a recordset to execute an SQL statement
''Dim myRecordset As New ADODB.Recordset
Dim SQL As String, SQL2 As String
dbPath = "table.accdb"
dbConnectStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbPath & ";"
strSQL = "INSERT INTO Jun_pre " _
& "(ProductName,DESCRIPTION,SKU,MT,(mt),MRP,Remark," _
& "no_of_units_in_a_case) VALUES "
& "(""aa"",""bb"",""test"",""testUnit"",1,2,Null,3,Null,4);"
With cnt
.Open dbConnectStr 'some other string was there
.Execute (strSQL)
.Close
End With
End Sub
Если ваш пример ADO вставляется в текущую базу данных, его можно значительно упростить.
Обратите внимание, что:
- Маловероятно, что ваш стол будет
принять строку нулевой длины (,,), Null is
наверное лучше.
- Я очень сомневаюсь, что 2 входит в
текстовое поле, поэтому оно не нуждается в кавычках.
- SQL - зарезервированное слово для VBA и
не следует использовать для именования переменных.
- Нельзя использовать SQL
инъекция с помощью Access, хотя может
быть трудным.
- Если вы дадите вам контроль
Собственные имена теперь, это спасет горе
в будущем