от
Я пытаюсь вставить данные в таблицу базы данных Access с помощью запроса на вставку. Я получаю ошибку Синтаксическая ошибка в выражении
INSERT INTO
. Я даже попробовал строку SQL без параметров и получил ту же ошибку, но если я вставил тот же запрос прямо в Access, он работает.
Dim sqlinsert As String
'sqlinsert = "INSERT INTO JobApplicants(Title, Address, Postcode, Phone, Email, Position, Education) VALUES(@Title, @Address, @Postcode, @Phone, @Email, @Position, @Education)"
' sqlinsert = "INSERT INTO JobApplicants(Title, ApplicantName,Address, Postcode, Phone, Email, Position, Education) VALUES('"

Ваш ответ

Отображаемое имя (по желанию):
Конфиденциальность: Ваш электронный адрес будет использоваться только для отправки уведомлений.
Анти-спам проверка:
Чтобы избежать проверки в будущем, пожалуйста войдите или зарегистрируйтесь.

2 Ответы

0 голосов
от
POSITION
- зарезервированное слово в Access. Таким образом, вы должны использовать квадратные скобки в запросе.
"INSERT INTO JobApplicants(Title, ApplicantName, Address, Postcode, Phone, Email, [Position], ..."
    
0 голосов
от
Вы связываете 7 параметров с готовым оператором, который фактически не имеет заполнителей. Оператор вставки, как необработанный SQL, оказывается допустимым, но я подозреваю, что параметры ошибки, которые не существуют в операторе, являются источником ошибки. Итак, попробуйте использовать заполнители в подготовленном утверждении:
sqlinsert = "INSERT INTO JobApplicants (Title, ApplicantName,Address, Postcode, Phone, Email, [Position], Education) VALUES (@Title, @ApplicantName, @Address, @Postcode, @Phone, @Email, @Position, @Education)"
Dim cmd As New OleDbCommand(sqlinsert, con1)

cmd.Parameters.Add(New OleDbParameter("@Title", comboTitle.Text))
cmd.Parameters.Add(New OleDbParameter("@ApplicantName", txtApplicant.Text))
cmd.Parameters.Add(New OleDbParameter("@Address", txtAddress.Text))
cmd.Parameters.Add(New OleDbParameter("@Postcode", txtPostcode.Text))
cmd.Parameters.Add(New OleDbParameter("@Phone", txtPhone.Text))
cmd.Parameters.Add(New OleDbParameter("@Email", txtEmail.Text))
cmd.Parameters.Add(New OleDbParameter("@Position", comboPosition.Text))
cmd.Parameters.Add(New OleDbParameter("@Education", comboEducation.Text))

con1.Open()
cmd.ExecuteNonQuery()
con1.Close()
Обратите внимание, что вы на самом деле не привязываете значение для имени заявителя. Поэтому я предполагаю, что где-то есть текстовое поле с именем
txtApplicant
, к текстовому свойству которого мы можем получить доступ, чтобы получить это значение.     
...