Я использую следующий код для создания новой записи в «таблице транзакций», вторая строка оператора вставки вызывает ошибку: Слишком мало параметров. Я проверил дважды, и все имена полей верны. Что еще может вызвать такой тип ошибок?ACCESS/SQL - Слишком мало параметров
' Modify this line to include the path to Northwind
' on your computer.
Set dbs = CurrentDb
Dim vblCustomerID As String
Dim vblMealType As String
Dim Charge As Currency
Dim vblDate As String
vblDate = Format(Date, "yyyy-mm-dd")
txtCustomerID.SetFocus
vblCustomerID = txtCustomerID.Text
txtMealType.SetFocus
vblMealType = txtMealType.Text
txtCharge.SetFocus
vblCharge = txtCharge.Text
dbs.Execute "INSERT INTO dbo_Transactions" _
& "(CustomerID, MealID, TransactionAmount, TransactionDate) VALUES " _
& "(" & vblCustomerID & ", " & vblMealType & ", " & vblCharge & ", " & vblDate & ");"
dbs.Close
Пожалуйста, используйте [параметризованные запросы] (http://stackoverflow.com/questions/95277/how-do-you-create-a-parameterized-query-in-ms-access- 2003-and-use-other-queries) при выполнении SQL; в противном случае вы крайне уязвимы для SQL-инъекций. Это также должно устранить вашу проблему. – LittleBobbyTables
Я бы предложил изменить код, чтобы вы сначала создали строку SQL и назначили ее переменной, а затем dbs.Execute эту переменную. Таким образом, вы можете поместить контрольную точку в переменную и посмотреть, что Access считает строкой SQL. В большинстве случаев, что Access считает, что это так, и что вы думаете, это совершенно другое. –
Вы уверены, что все ваши переменные имеют значения? – mucio