Инструкция INSERT в SQl

#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 ошибки [Номер файла] и [Имя пациента] и дата без # Большое спасибо