#sql #vba #ms-access-2007
#sql #vba #ms-access-2007
Вопрос:
Я пытаюсь сохранить запись в более чем одной таблице, я использую инструкцию insert, но это выдает мне «синтаксическую ошибку в инструкции INSERT INTO» Вот мой код
strSQL = " INSERT INTO [2011 Nurse Patient Index]
(File Number, Patient name ,Gender , AgeRTU , Nationality ,
Diagnosis , Other , Appointment , Date)
VALUES('" amp; File_NumberRTU.Value amp; "','" amp; Patient_nameRTU.Value amp; "' ,
'" amp; GenderRTU.Value amp; "', '" amp; AgeRTU.Value amp; "' ,
'" amp; NationalityRTU.Value amp; "' , '" amp; DiagnosisRTU.Value amp; "' ,
'" amp; OtherRTU.Value amp; "' , '" amp; AppointmentRTU.Value amp; "' ,
'" amp; DateRTU.Value amp; "')"
CurrentDb.Execute strSQL
в этой строке появляется ошибка
CurrentDb.Execute strSQL
Кто-нибудь может сказать мне, где я ошибся?
Спасибо
Комментарии:
1. Нам нужно знать, что содержится в переменных, которые вы используете для построения SQL. Лучший способ — выполнить отладку. Выведите strSQL перед попыткой его выполнения, а затем покажите результат использования этого оператора печати.
Ответ №1:
Если столбец даты имеет тип Date
или Datetime
в вашей базе данных, возможно, вам придется окружить DateRTU.Value
#’s, т.е.,
INSERT INTO
[2011 Nurse Patient Index]([File Number], [Patient name], Gender, AgeRTU, Nationality, Diagnosis, Other, Appointment, Date)
VALUES
('" amp; File_NumberRTU.Value amp; "',
'" amp; Patient_nameRTU.Value amp; "',
'" amp; GenderRTU.Value amp; "',
'" amp; AgeRTU.Value amp; "',
'" amp; NationalityRTU.Value amp; "',
'" amp; DiagnosisRTU.Value amp; "',
'" amp; OtherRTU.Value amp; "',
'" amp; AppointmentRTU.Value amp; "',
'#" amp; DateRTU.Value amp; "#')"
Комментарии:
1. Нет проблем, кстати, вы должны отметить ответ как правильный, щелкнув большую галочку с левой стороны. Таким образом, другие люди знают, что на вопрос был дан ответ, и не будут тратить время на его нажатие :).
2. ЭТО сработало один раз, а теперь снова выдает мне ту же ошибку, я не знаю, почему это так и почему он вообще сохранил запись
3. Что вы имеете в виду? Конечно, он собирается «сохранить» запись в базе данных — он вставляет в нее строку.
4. Сначала, когда я попробовал другую запись, она выдала мне ту же ошибку, что и раньше » синтаксическая ошибка в операторе INSERT INTO», я не знаю, почему
5. Вероятно, это как-то связано с фактическими данными, которые вы пытаетесь вставить. Сохраните строку запроса, которую я вам дал, в переменной и распечатайте ее каким-то образом, чтобы вы могли видеть, какой SQL он фактически выполняет для данных, которые не работают, а затем опубликуйте это.
Ответ №2:
Попробуйте заключить в квадратные скобки [File Number]
и [Patient name]
.
strSQL = " INSERT INTO [2011 Nurse Patient Index]([File Number], [Patient name] ,Gender , AgeRTU , Nationality , Diagnosis , Other , Appointment , Date)VALUES('" amp; File_NumberRTU.Value amp; "','" amp; Patient_nameRTU.Value amp; "' , '" amp; GenderRTU.Value amp; "', '" amp; AgeRTU.Value amp; "' , '" amp; NationalityRTU.Value amp; "' , '" amp; DiagnosisRTU.Value amp; "' , '" amp; OtherRTU.Value amp; "' , '" amp; AppointmentRTU.Value amp; "' , '" amp; DateRTU.Value amp; "')"
CurrentDb.Execute strSQL
Комментарии:
1. @AyaAbdelsalam Какое значение
strSQL
после присваивания?2. @AyaAbdelsalam Возможно, ваши значения содержат
'
символ. Это приведет к разрыву инструкции, и именно поэтому вы не должны вставлять в базу данных с помощью динамического SQL.3. Теперь я понял, что на самом деле есть 2 ошибки [Номер файла] и [Имя пациента] и дата без # Большое спасибо