Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
4 / 4 / 0
Регистрация: 10.09.2016
Сообщений: 302
1

Импорт с обновлением из Excel данных файла .cvs в таблицы Access

26.10.2017, 16:28. Просмотров 1021. Ответов 7
Метки нет (Все метки)

Здравствуйте, уважаемые знатоки vba. Собственно, мой вопрос вынесен в заголовок.
Конкретно меня интересует теория, какой вариант более предпочтителен.

Вводные данные: макрос работает из Excel. Необходимо импортировать данные из выбранного .cvs файла в таблицу Access, при этом следует копии (уже существующие записи в Access) не импортировать, а также некоторые поля привести к определённому формату.
Состав таблицы Access и файла .cvs отличается наличием в таблице ключевого поля (AutoNumber), поэтому как я понимаю прямой импорт с помощью TransferText не подходит.

Варианты какие пришли мне в голову:
1. Создать временную таблицу Access, аналог .cvs файла. Копировать с помощью метода TransferText, а затем запросами добавлять нужные записи в нужном формате в основную таблицу Access.
2. Работать через recordset.

Может быть кто-то предложит свой (более правильный) вариант.

Спасибо.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.10.2017, 16:28
Ответы с готовыми решениями:

Импорт данных из Excel файла в Access
Доброго времени суток, подскажите пожалуйста каким образом можно осуществить импорт данных из...

Импорт данных из файла Excel в Web Access
Никогда с Web Access не работал, а тут пришлось. В обычной БД Access проблемы нет, осуществляю...

Импорт таблицы excel в access
Всем привет. Очень нужна Ваша помощь! Есть таблица excel её нужно перенести в access через vba,...

Импорт таблицы из Excel в Access
Значит у меня есть таблица в акселе. Таблица представляей собой документ в котором находится разное...

__________________
7
Эксперт MS Access
26626 / 14320 / 3171
Регистрация: 28.04.2012
Сообщений: 15,702
27.10.2017, 11:00 2
Без спецификации TransferText и запрос поместят все данные в одно поле, которое потом надо разбивать сплитом. Мне запрос ближе. Типа такого
SQL
1
SELECT * FROM [Имя Файла.csv] IN 'C:апка'[Text;FMT=Delimited;HDR=NO;]
Далее в рекордсете запроса разбивать данные и помещать в таблицы.
1
4 / 4 / 0
Регистрация: 10.09.2016
Сообщений: 302
27.10.2017, 13:30  [ТС] 3
mobile, спасибо большое. Не подскажешь, как мне лучше избегать повторений? То есть, скопировать без повторений? В рекордсете как-то искать совпадения или добавить все, а затем повторения из таблицы удалить? Как быстрее и/или лучше?
0
Эксперт MS Access
26626 / 14320 / 3171
Регистрация: 28.04.2012
Сообщений: 15,702
27.10.2017, 14:53 4
В запросе добавьте Distinct и одинаковые строки не повторятся.
SQL
1
SELECT DISTINCT * FROM [Имя Файла.csv] IN 'C:апка'[Text;FMT=Delimited;HDR=NO;]
Если же повторения касаются только группы полей, а не всех, то нужен алгоритм выбора - какую из подобных записей выбрать, по какому принципу. Если такой алгоритм существует, то делается группировка по уникальному набору полей, а для остальных действует алгоритм выбора основанный либо на статистических функциях SQL (SUM, COUNT, FIRST, LAST и т.д.) либо на каких-то константах, не связанных с полями запроса или связанных через стат.функции.
0
4 / 4 / 0
Регистрация: 10.09.2016
Сообщений: 302
27.10.2017, 14:56  [ТС] 5
Я немного не о том. Как избежать повторного копирования данных? Если запись уже существует? Копировать все, потом удалять дубли или искать каждый раз существует ли копия?
0
Эксперт MS Access
26626 / 14320 / 3171
Регистрация: 28.04.2012
Сообщений: 15,702
28.10.2017, 13:09 6
Цитата Сообщение от vlanatvaszla Посмотреть сообщение
Как избежать повторного копирования данных? Если запись уже существует?
Наилучший способ - задать в приемной таблице уникальный индекс на поле, которое не должно повторяться. Если таких полей несколько, то создаем составной и тоже уникальный индекс на всю комбинацию неповторяемых полей.
0
4 / 4 / 0
Регистрация: 10.09.2016
Сообщений: 302
28.10.2017, 15:00  [ТС] 7
Это да... Но у меня должна быть проверка по всем полям. А их много. Проверять каждый раз - напрасный труд. Скопирую все, а потом последние копии удалю одним запросом. Думаю, так будет быстрее...
0
6822 / 2764 / 520
Регистрация: 19.10.2012
Сообщений: 8,432
28.10.2017, 15:46 8
Что за .cvs? Думаю сперва следует уточнить это
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
28.10.2017, 15:46

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Импорт таблицы excel в БД access 2003
Форумчане, доброго времени суток! Как запустить процедуру импорта в БД Аксесс кнопкой? ...

Импорт всей таблицы из Excel в Access
Только начинаю освоение Access, поэтому прошу помощи у знатоков. Есть форма, где по кнопке...

Импорт таблицы Excel с изображениями в таблицу access
Всем привет! Ребята, нужна помощь. Есть таблица Excel, в которой есть несколько столбцов с...

Экспорт-импорт данных Excel-Access-Excel
Доброе время суток уважаемые форумчане. Приходит информация в экселевской таблице. Скидываю её в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.