Всем привет, скажите пожалуйста есть ли вариант импортировать данные из Excel в Access? встроенные вариант импорта в Accesse меня не устраивает потому что там создается новая таблица а мне нужно импортировать в уже существующую базу, причем поля в Excel и в Access отличаются, может можно каким нибудь SQL запросом импортировать и указать что и в какие поля импортировать?
Как вариант, можно создать связь с листом Excel, а после работать сним как стаблицей
Код:
CurrentDb.Execute "INSERT INTO Таблица1 ( 1, 2, 3, 4 ) SELECT Лист1.F2, Лист1.F3, Лист1.F4, Лист1.F1 FROM Лист1"
добавление данных Таблица1 данными Лист1, в примере я поменял местами поля при добавлении
а что означает например F1. F2 итд? мне это не понятно, это название столбца?
и как именно создать связь с Excel? можно мне пошагово пожалуйста если не затрудник?просто я так еще не делал
F1, F2, ... - да это столбцы
Связь создается также как и импорт из Excel, только надо выбирать не "импортировать данные в новую таблицу", а "создать связанную таблицу для связи с источником данных", данные в ексельке могут меняться изменения будут видны в базе
Здравствуйте betirsolt
Для получения данных с листа Excel или диапазона листа, не обязательно подключаться к файлу.
Данные могут быть получены подобными SQL конструкциями:
Код:
SELECT * FROM [Лист1$] IN "C:\Users\1\Desktop\File.xls" "Excel 8.0; HDR=Yes;"
SELECT * FROM [Excel 8.0; HDR=No;DATABASE=C:\Users\1\Desktop\File.xls].[Лист1$A2:e500]
..[Лист1$].. - считывает данные со всего листа
..[Лист1$A2:e500].. - с заданного диапазона
HDR=No - указывает, что источник не содержит заголовков (имен полей) и им автоматически присваиваются имена F1, F2,...FN
присутствие HDR=Yes (или отсутствие HDR=..) говорит о том, что первая строка содержит заголовки
Соответственно запрос на добавление может выглядеть так:
Код:
INSERT INTO Таблица1 ( Field1, Field2, Field3, Field4 )
SELECT F1, F2, F3, F4 FROM [Excel 8.0;HDR=No;DATABASE=C:\...\File.xls][Лист1$A2:e500]
Евгений.
Евгений не могли бы вы дать пример прямого запроса на импорт из Excel c условием импорта (например поле F2=22), пример со связанной екселькой:
Код:
INSERT INTO Таблица1 ( 1, 2, 3 )
SELECT Лист1.F1, Лист1.F3, Лист1.F4
FROM Лист1
WHERE (((Лист1.F2)=22));
ставилась такая задача, вышел из положения этим способом
пытался переработать вашу конструкцию - акцес ругается на длину, похоже я чего-то недопонимаю...
теперь по вашему варианту пытаюсь сделать вот такой запрос
Код:
INSERT INTO Обратившиеся ( Дата_обращения, Телефон, Текст_обращения, Категория, Район )
SELECT Лист1.F1, Лист1.F2, Лист1.F3, Лист1.F4, Лист1.F5
FROM Лист1;
ошибок не выдает но показывает окошко где предлагает ввести мне значения полей
Код:
Лист1.F1, Лист1.F2, Лист1.F3, Лист1.F4, Лист1.F5
а мне нужно импортировать все как есть, что нужно сделать?
Проверьте название полей в присоедененой таблице "Лист1", возможно они называюттся не "F..."
Поповоду ошибки "ядро базаданных не может найти..." - поставьте точку между квадратных скобок, пример
Код:
INSERT INTO Таблица1 ( 1, 2, 3, 4 )
SELECT F1, F2, F3, F4
FROM [Excel 8.0;HDR=No;DATABASE=D:\Документы\Desktop\123.xlsx].[Лист1$A1:D2];
Евгений можее не отвечать, спасибо, разобрался
Код:
INSERT INTO Таблица1 ( 1, 2, 3, 4 )
SELECT F1, F2, F3, F4
FROM [Excel 8.0;HDR=No;DATABASE=D:\Документы\Desktop\123.xlsx].[Лист1$A1:D2]
WHERE (((F2)=22));
вроде все получилось
Код:
INSERT INTO Обратившиеся ( Дата_обращения, Телефон, Текст_обращения, Категория, Район )
SELECT Лист1.F1, Лист1.F2, Лист1.F3, Лист1.F4, Лист1.F5
FROM Лист1;
всем большое спасибо