Выдает ошибку при запуске SQL-скрипта

Я пытаюсь INSERT INTO с SQL в таблице в VBA, но при запуске этого скрипта выдает ошибку. почему?

Я ожидал, что он добавит значения в таблицу, но вместо этого выдает ошибку, у кого-нибудь есть решение для этого?

DoCmd.RunSQL "INSERT INTO tblScores (Student, Score, Date, ExamType, Lesson) VALUES (cbStudent.Value,txtScore.Value,txtDate.Value,cbExamType.value,cbLesson.Value);"

Сообщение об ошибке:

Выдает ошибку при запуске SQL-скрипта

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
0
53
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Значения формы должны быть объединены в строку SQL, а не заключены в нее.

Например:

"WHERE ID  = " & IdControl.Value

Но этот путь не рекомендуется по разным причинам. Лучше всего создать временный запрос и передать значения в качестве параметров. Если вам нужно запускать его часто, создайте постоянный запрос и просто вызывайте его — это будет немного быстрее.

Const SQL As String = "PARAMETERS [Student] Text (255), [Score] IEEESingle, [Date] DateTime, [ExamType] Text (255), [Lesson] Text (255); " & _
                      "INSERT INTO tblScores (Student, Score, [Date], ExamType, Lesson) " & _
                      "SELECT [Student] AS [Student], [Score] AS [Score], [Date] AS [Date], [ExamType] AS [ExamType], [Lesson] AS [Lesson];"
                      
Dim q As DAO.QueryDef
Set q = CurrentDb().CreateQueryDef("", SQL) 'temporary query 
    q.Parameters("[Student]").Value = cbStudent.Value
    q.Parameters("[Score]").Value = txtScore.Value
    q.Parameters("[Date]").Value = txtDate.Value
    q.Parameters("[ExamType]").Value = cbExamType.Value
    q.Parameters("[Lesson]").Value = cbLesson.Value
    q.Execute
    q.Close

Имейте в виду, что я не знаю фактических типов данных полей вашей таблицы, поэтому некоторые параметры могут быть отключены, например, оценка.

почему тогда мой код работал? почему выдает синтаксическую ошибку. можно немного настроить код и заставить его работать?

Aydiniyom 25.01.2023 12:01

Ваша строка SQL неверна. Текстовые значения необходимо заключать в кавычки ' ', а даты — в #.

Kostas K. 25.01.2023 12:05

он дает ту же ошибку с ' ' ' для текстов

Aydiniyom 25.01.2023 12:08

Вы должны сделать это для всех текстовых полей: "'" & cbStudent.Value & "'". Замените ' на # для даты. Но, как я уже сказал, это не рекомендуется. Если текстовое значение содержит кавычки, например О'Брайен, SQL сломается. Параметры - это путь.

Kostas K. 25.01.2023 12:11

я нашел проблему. я набрал «значение» вместо «значение» (я набрал букву V в нижнем регистре)

Aydiniyom 25.01.2023 12:15

нет, это было не то

Aydiniyom 25.01.2023 12:17
Ответ принят как подходящий

Попробуй это: Dim varStudent как строка . varStudent = cbStudent . В строке SQL: ЗНАЧЕНИЯ ( '" & varStudent & "', '" & varTxtScore & "'

'" = одинарная кавычка двойная кавычка

это на самом деле то, что я делал неправильно! Спасибо!

Aydiniyom 26.01.2023 10:11

Другие вопросы по теме