#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 Рад вам помочь!