powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Импорт нескольких полей в БД одним INSERTом
11 сообщений из 11, страница 1 из 1
Импорт нескольких полей в БД одним INSERTом
    #39088976
Askush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет, камрады!

Задача закинуть диапазон EXCEL в существующую БД. Перебирать построчно нудно и непроизводительно, по этому хочется сделать одним INSERTом. Однако вот такой SQL запрос приводит к ошибке. Подскажите, пожалуйста, что не так.

Код: plsql
1.
2.
3.
INSERT INTO Operation(FIO)
SELECT * 
FROM [Excel 12.0 xml;HDR=Yes;IMEX=1;DATABASE=C:\myWorkbook.xlsx].[Лист1$C2:C500];
...
Рейтинг: 0 / 0
Импорт нескольких полей в БД одним INSERTом
    #39088987
Alozar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что за ошибка?
Если в селекте не звёздочка, работает?
...
Рейтинг: 0 / 0
Импорт нескольких полей в БД одним INSERTом
    #39088988
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Askushтакой SQL запрос приводит к ошибке
Обычно ошибка имеет вменяемое описание ака текст ошибки. В данном случае - вероятно, сообщение о несовпадении количества полей.
...
Рейтинг: 0 / 0
Импорт нескольких полей в БД одним INSERTом
    #39088993
Alozar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, имя таблицы заключи в квадратные скобки, иначе работать точно не будет.
Возможно будет необходимо перечислить поля таблицы, куда данные заносишь.
...
Рейтинг: 0 / 0
Импорт нескольких полей в БД одним INSERTом
    #39089014
Askush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привожу код VBA и скрин ошибки
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Public Function AddToTabFromQuery1() As Boolean

Dim SQLAdd As String
Dim rs As New ADODB.Recordset

On Error GoTo FunctionError

If Not (DBConn) Then Exit Function


SQLAdd = "INSERT INTO Operation(FIO) SELECT * FROM [Excel 12.0 xml;HDR=Yes;IMEX=1;DATABASE=C:\myWorkbook.xlsx].[Лист1$C2:C500];"

rs.Open SQLAdd, conn

Set rs = Nothing
AddToTabFromQuery1 = True
Exit Function

FunctionError:
MsgBox "Ошибка"
Debug.Print SQLAdd
AddToTabFromQuery1 = False
            
End Function
...
Рейтинг: 0 / 0
Импорт нескольких полей в БД одним INSERTом
    #39089022
Askush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alozar, если убрать звёздочку то возникает ошибка синтаксиса.
...
Рейтинг: 0 / 0
Импорт нескольких полей в БД одним INSERTом
    #39089057
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Askushесли убрать звёздочку то возникает ошибка синтаксиса.
Не убрать, а заменить на точное имя поля, которое выбирается из исходной таблицы.
...
Рейтинг: 0 / 0
Импорт нескольких полей в БД одним INSERTом
    #39089071
Askush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, премного благодарен! Заработало. Итого, вот такой код:

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
Public Function AddToTabFromQuery1() As Boolean

Dim SQLAdd As String
Dim rs As New ADODB.Recordset

On Error GoTo FunctionError

If Not (DBConn) Then Exit Function


SQLAdd = "INSERT INTO Operation(FIO) SELECT [имя_поля] FROM [Excel 12.0 xml;HDR=Yes;IMEX=1;DATABASE=C:\myWorkbook.xlsx].[Лист1$C2:C500];"

rs.Open SQLAdd, conn

Set rs = Nothing
AddToTabFromQuery1 = True
Exit Function

FunctionError:
MsgBox "Ошибка"
Debug.Print SQLAdd
AddToTabFromQuery1 = False
            
End Function
...
Рейтинг: 0 / 0
Импорт нескольких полей в БД одним INSERTом
    #39089153
Askush
Код: vbnet
1.
2.
SQLAdd = "INSERT INTO ..."
rs.Open SQLAdd, conn


Охренеть! Вы открываете Recordset на основе запроса на добавление. И это работает?
И при этом еще и записи в таблицу добавляются?
...
Рейтинг: 0 / 0
Импорт нескольких полей в БД одним INSERTом
    #39089439
Askush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Анатолий ( Киев ), таки да, добавляются. Поделитесь, пожалуйста, что вас смущает.
...
Рейтинг: 0 / 0
Импорт нескольких полей в БД одним INSERTом
    #39089794
Askushтаки да, добавляются. Поделитесь, пожалуйста, что вас смущает.
Запросы на изменение обычно выполняются методом Execute. В вашем случае это:
Код: sql
1.
conn.Execute "INSERT INTO..."


То, что добавление выполняется при выполнении rs.Open (и вообще, что Recordset открывается) для меня - откровение.
Видимо это ADODB такой мудрый, с DAO такой финт не прокатил бы.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Импорт нескольких полей в БД одним INSERTом
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]