Почему мой код Access SQL VBA выскакивает из подраздела?

#sql #ms-access #vba #ms-access-2010

#sql #ms-access #vba #ms-access-2010

Вопрос:

Мой код завершается из подраздела в строке с надписью «CurrentDb.Execute strSQL_Insert_Data».Выполнить strSQL_Insert_Data. Вы знаете, почему это происходит?

   Local_Array = Array("dbo_Tape_Capture_Local_tbl", "dbo_Tape_Local_tbl", "dbo_Tape_Memo_Local_tbl")
  Server_Array = Array("dbo_Tape_Capture", "dbo_Tape", "dbo_Tape_Memo")

For i = 0 To UBound(Local_Array)
    strSQL_Insert_Data = "INSERT INTO [" amp; Local_Array(i) amp; "] " amp; _
                         "SELECT [" amp; Server_Array(i) amp; "].* " amp; _
                         "WHERE (LEFT([" amp; Server_Array(i) amp; "].header__situs_loan_id," amp; _
                          Len([Forms]![Login Page]![CBO_Job_Select_Login]) amp; ") = " amp; _
                         "[Forms]![Login Page]![CBO_Job_Select_Login]);"

CurrentDb.Execute strSQL_Insert_Data

CurrentDb.Close

Next i
  

—Добавлен распечатанный код—

 INSERT INTO [dbo_Tape_Capture_Local_tbl] SELECT [dbo_Tape_Capture].*
WHERE (LEFT([dbo_Tape_Capture].header__situs_loan_id,14) = [Forms]![Login Page]![CBO_Job_Select_Login]);
  

Комментарии:

1. Не закрывайте соединение с БД внутри цикла.

2. Это не самый простой код, который может воспроизвести вашу проблему. Например,, что произойдет, если вы выполните простейшую из возможных вставок. Тогда это работает? Если это так, проблема в вашем sql — попробуйте распечатать его и запустить вручную. Если нет, то ваше подключение к БД может быть неисправно. Попробуйте полностью удалить цикл и только для 1 вставки. Возможно, у вас нет разрешения на вставку. Пожалуйста, добавьте больше информации о том, что вы пытались сузить вопрос.

3. Привет, Богемец. У меня есть разрешение. Тем не менее, я распечатал код, чтобы посмотреть, сможете ли вы обнаружить какие-либо ошибки

Ответ №1:

В вашем запросе чего-то не хватает FROM TableName . Замените TableName фактическим именем таблицы

 strSQL_Insert_Data = "INSERT INTO [" amp; Local_Array(i) amp; "] " amp; _
                     "SELECT [" amp; Server_Array(i) amp; "].* " amp; _
                     "FROM [" amp; Server_Array(i) amp; "] " amp; _
                     "WHERE (LEFT([" amp; Server_Array(i) amp; "].header__situs_loan_id," amp; _
                      Len([Forms]![Login Page]![CBO_Job_Select_Login]) amp; ") = " amp; _
                     "[Forms]![Login Page]![CBO_Job_Select_Login]);"
  

Комментарии:

1. Спасибо. Я думал, что это должно было быть включено с самого начала, однако я тестировал с помощью Access Query Builder, и он сгенерировал что-то другое (не включал строку FROM). Однако ваше решение сработало!

2. @ConradAddo Рад вам помочь!