1 / 1 / 0
Регистрация: 21.02.2015
Сообщений: 54
|
|
1 | |
Обновить данные в таблице Access на основе данных из Excel31.07.2017, 20:38. Показов 15673. Ответов 23
Метки нет (Все метки)
Добрый день, подскажите, пожалуйста, как решить задачу:
Есть книга Excel "C:\Data\Новые сотрудники.xls". В этой книге есть лист "output", с таблицей данных (первая строка - название полей). Есть база Access "Сотрудники". В этой базе есть таблица "test" с данными. Что надо сделать: Необходимо создать макрос в Excel либо запрос SQL в Access, который бы вставлял данные из листа output, в таблицу "test", причем если в таблице "test" есть уже такие данные (определяется по четырем ключевым полям), то их необходимо заменить. Т.е. не должно быть дублированых записей в таблице "test". Этим макросом я буду пополнять ежедневно данные в таблице "test", либо заменять уже существующие (на верные или скорректированные). В чем проблема: Я не знаю как создать таблицу (объект?) с дынными из Excel, что бы: a. проверить есть ли такие же записи в таблице "test" (если есть, то удалить их из "test" и залить заново с новыми данными) b. Вставить их в access.
0
|
31.07.2017, 20:38 | |
Ответы с готовыми решениями:
23
Обновить данные в таблице excel на основе даннх из Access Rs.EditMode или как обновить данные в Базе Данных VBA (Excel to Access) Обновить данные в комбобоксе после добавления в базу данных Access Создание графика PivotTable (+ Chart) в Excel файле на основе данных из Access |
26815 / 14494 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|||||||||||||||||||||
31.07.2017, 21:54 | 2 | ||||||||||||||||||||
Поскольку запрос к Excel необновляемый (патентные ограничения), то придется делать в 4 запроса:
1. удаление имеющейся временной таблицы 2. создание новой временной таблицы для импорта из Excel 3. обновление совпадающих по ключам записей 4. добавление новых в таблицу Test. 1. Запрос на удаление временной таблицы Temp
3
|
0 / 0 / 0
Регистрация: 13.02.2019
Сообщений: 15
|
|
01.02.2020, 19:25 | 3 |
Извините, но куда это всё вписывать, и как это будет выглядеть код в VBA по нажатию кнопки. Есть ли у кого пример.
Я что то поставлял в кнопку, вроде постарался адаптировать под свою задачу, но в итоге не вышло что-то.
0
|
7439 / 4574 / 300
Регистрация: 12.08.2011
Сообщений: 14,228
|
|
02.02.2020, 03:31 | 4 |
На вопрос "куда это вставить?" обычно отвечают однозначно. Но не буду здесь озвучивать, думаю дойдёт.
Не извиню. Извиняются, это когда на ногу случайно наступил, а когда проявляют свою полную неграмотность в деле, за которое берутся, тогда извините не прокатит. Заплатите кому надо и вам всё сделают, либо учите хотя бы азы: сначала SQL, потом MS Access для чайников. Я уже не буду говорить про море примеров на форуме с кодом sql в vba. И не только на форуме. И уж тем более промолчу, что в сообщении mobile VBA даже не пахнет
0
|
756 / 226 / 14
Регистрация: 16.01.2014
Сообщений: 731
|
|
02.02.2020, 08:31 | 5 |
Ну, можно, например, создать хранимые запросы и вызывать их из VBA командой CurrentDB.Execute
А вызов посадить на кнопку.
0
|
10741 / 5582 / 1409
Регистрация: 05.10.2016
Сообщений: 15,787
|
|
02.02.2020, 08:54 | 6 |
Правильно!
Но так эти запросы надо как то запускать .... Плюс потребуется: 01. Диалог открытия импортируемого файла ( на форуме их море) 02. Дополнительная предварительная обработка импортированных данных ... всё на VBA ! ... А чего мы тут обсуждаем??? - ТС-а давно тут уже нет - ненужно уже ...
0
|
7439 / 4574 / 300
Регистрация: 12.08.2011
Сообщений: 14,228
|
|
02.02.2020, 10:57 | 7 |
0
|
7439 / 4574 / 300
Регистрация: 12.08.2011
Сообщений: 14,228
|
|
04.02.2020, 13:05 | 9 |
не важно когда, отвечаем уже другому ТС
Обновить данные в таблице Access на основе данных из Excel
0
|
2 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 179
|
|
30.11.2021, 18:29 | 10 |
Не хочу новую тему создавать.
У меня немного другая задача: вставить в таблицу MyTable только те строки из файла Excel, которых там нет. Программа (Макрос1) ругается на синтаксис SQL, подозреваю, что неверно ссылаюсь на лист Excel. ...конечно, можно завести временную таблицу, туда вставить всё из Excel, а потом делать запрос на обновление, но неужели одним запросом обойтись нельзя?
0
|
10741 / 5582 / 1409
Регистрация: 05.10.2016
Сообщений: 15,787
|
|||||||||||
30.11.2021, 20:23 | 11 | ||||||||||
Попробуйте:
1
|
2 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 179
|
|
30.11.2021, 20:59 | 12 |
Не могу не отозваться, оба примера работают.
Ещё спасибо не только за помощь, но и за очередные примеры красивого кода. Бесспорно, SQL запрос, разделенный & vbCrLf & в ImmadiateWindow смотрится куда привлекательнее, чем длинная строка.
1
|
10741 / 5582 / 1409
Регистрация: 05.10.2016
Сообщений: 15,787
|
|
30.11.2021, 23:09 | 13 |
0
|
Модератор
|
||||||
01.12.2021, 10:41 | 14 | |||||
предпочитаю иную запись, без строк продолжения и с пробелом в начале подстроки
замена же позволяет явно видеть все апострофы
1
|
2 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 179
|
|
01.12.2021, 11:00 | 15 |
shanemac51, вариант замены длинной строки на имя переменной действительно хорош, но имхо "собирание матрешки" с рекурсией (s1=s1 & bla-bla) порождает в Immadiate длинную строку, а разделители & vbCrLf & делают запрос во время отладки более читаемым.
0
|
Модератор
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
|
|
01.12.2021, 11:10 | 16 |
0
|
Модератор
|
|
01.12.2021, 12:14 | 17 |
у каждого свои приоритеты в создании кода - для меня основой является читабельность, видимость всех апострофов/пробелов
пара лишних строк - не критичны
0
|
10741 / 5582 / 1409
Регистрация: 05.10.2016
Сообщений: 15,787
|
|
01.12.2021, 12:19 | 18 |
0
|
Модератор
|
||||||
01.12.2021, 12:22 | 19 | |||||
читабельность в коде у меня лучше, причем я обычно имею временный запрос, в который при отладке записываю полученную длинную строку
1
|
Модератор
6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
|
|
01.12.2021, 12:50 | 20 |
Разумеется.
Я ведь и не навязываю. Просто свое мнение высказываю. И не говорю
0
|
01.12.2021, 12:50 | |
01.12.2021, 12:50 | |
Помогаю со студенческими работами здесь
20
Как экспортировать данные из Excel в базу данных MS Access? Обновить данные в таблице Не получается обновить запись в таблице Access Обновить данные в основной таблице Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |