1 / 1 / 0
Регистрация: 21.02.2015
Сообщений: 54
|
|
Обновить данные в таблице Access на основе данных из Excel31.07.2017, 20:38. Показов 16010. Ответов 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)
|
![]() 26820 / 14500 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|||||||||||||||||||||
31.07.2017, 21:54 | |||||||||||||||||||||
Поскольку запрос к Excel необновляемый (патентные ограничения), то придется делать в 4 запроса:
1. удаление имеющейся временной таблицы 2. создание новой временной таблицы для импорта из Excel 3. обновление совпадающих по ключам записей 4. добавление новых в таблицу Test. 1. Запрос на удаление временной таблицы Temp
3
|
![]() ![]() 7455 / 4588 / 302
Регистрация: 12.08.2011
Сообщений: 14,344
|
|
02.02.2020, 03:31 | |
На вопрос "куда это вставить?" обычно отвечают однозначно. Но не буду здесь озвучивать, думаю дойдёт.
Не извиню. Извиняются, это когда на ногу случайно наступил, а когда проявляют свою полную неграмотность в деле, за которое берутся, тогда извините не прокатит. Заплатите кому надо и вам всё сделают, либо учите хотя бы азы: сначала SQL, потом MS Access для чайников. Я уже не буду говорить про море примеров на форуме с кодом sql в vba. И не только на форуме. И уж тем более промолчу, что в сообщении mobile VBA даже не пахнет
0
|
![]() 11045 / 5683 / 1449
Регистрация: 05.10.2016
Сообщений: 16,072
|
|
02.02.2020, 08:54 | |
Правильно!
![]() Но так эти запросы надо как то запускать .... Плюс потребуется: 01. Диалог открытия импортируемого файла ( на форуме их море) 02. Дополнительная предварительная обработка импортированных данных ... всё на VBA ! ... А чего мы тут обсуждаем??? - ТС-а давно тут уже нет - ненужно уже ...
0
|
![]() |
|
04.02.2020, 11:41 | |
0
|
![]() ![]() 7455 / 4588 / 302
Регистрация: 12.08.2011
Сообщений: 14,344
|
|
04.02.2020, 13:05 | |
не важно когда, отвечаем уже другому ТС
Обновить данные в таблице Access на основе данных из Excel
0
|
![]() 2 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 179
|
|
30.11.2021, 18:29 | |
Не хочу новую тему создавать.
У меня немного другая задача: вставить в таблицу MyTable только те строки из файла Excel, которых там нет. Программа (Макрос1) ругается на синтаксис SQL, подозреваю, что неверно ссылаюсь на лист Excel. ...конечно, можно завести временную таблицу, туда вставить всё из Excel, а потом делать запрос на обновление, но неужели одним запросом обойтись нельзя?
0
|
![]() 11045 / 5683 / 1449
Регистрация: 05.10.2016
Сообщений: 16,072
|
|||||||||||
30.11.2021, 20:23 | |||||||||||
Попробуйте:
1
|
![]() 2 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 179
|
|
30.11.2021, 20:59 | |
Не могу не отозваться, оба примера работают.
Ещё спасибо не только за помощь, но и за очередные примеры красивого кода. Бесспорно, SQL запрос, разделенный & vbCrLf & в ImmadiateWindow смотрится куда привлекательнее, чем длинная строка.
1
|
Модератор
![]() ![]() |
||||||
01.12.2021, 10:41 | ||||||
предпочитаю иную запись, без строк продолжения и с пробелом в начале подстроки
замена же позволяет явно видеть все апострофы
1
|
![]() 2 / 1 / 0
Регистрация: 27.01.2015
Сообщений: 179
|
|
01.12.2021, 11:00 | |
shanemac51, вариант замены длинной строки на имя переменной действительно хорош, но имхо "собирание матрешки" с рекурсией (s1=s1 & bla-bla) порождает в Immadiate длинную строку, а разделители & vbCrLf & делают запрос во время отладки более читаемым.
0
|
Модератор
![]() ![]() |
|
01.12.2021, 12:14 | |
у каждого свои приоритеты в создании кода - для меня основой является читабельность, видимость всех апострофов/пробелов
пара лишних строк - не критичны
0
|
Модератор
![]() ![]() |
||||||
01.12.2021, 12:22 | ||||||
читабельность в коде у меня лучше, причем я обычно имею временный запрос, в который при отладке записываю полученную длинную строку
1
|
Модератор
![]() 6231 / 2909 / 707
Регистрация: 12.06.2016
Сообщений: 7,839
|
|
01.12.2021, 12:50 | |
Разумеется.
Я ведь и не навязываю. Просто свое мнение высказываю. И не говорю
0
|
01.12.2021, 12:50 | ||||||
Помогаю со студенческими работами здесь
20
Создание графика PivotTable (+ Chart) в Excel файле на основе данных из Access Как экспортировать данные из Excel в базу данных MS Access?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
Новые блоги и статьи
![]() |
||||
Результаты исследования от команды MCM (март 2025 г.)
Programma_Boinc 07.04.2025
Результаты исследования от команды MCM (март 2025 г. )
В рамках наших текущих исследований мы продолжаем изучать гены, которые имеют наибольшую вероятность развития рака легких, выявленные в рамках. . .
|
Рекурсивные типы в Python
py-thonny 07.04.2025
Рекурсивные типы - это типы данных, которые определяются через самих себя или в сочетании с другими типами, которые в свою очередь ссылаются на исходный тип. В мире программирования такие структуры. . .
|
C++26: Объединение и конкатенация последовательностей и диапазонов в std::ranges
NullReferenced 07.04.2025
Работа с последовательностями данных – одна из фундаментальных задач, с которой сталкивается каждый разработчик. C++ прошел длинный путь в эволюции средств для манипуляции коллекциями – от. . .
|
Обмен данными в микросервисной архитектуре
ArchitectMsa 06.04.2025
Когда разработчики начинают погружаться в мир микросервисов, они часто сталкиваются с парадоксальным правилом: "два сервиса не должны делить один источник данных". Эта мантра звучит повсюду в. . .
|
PostgreSQL в Kubernetes: Автоматизация обслуживания с CNPG
Mr. Docker 06.04.2025
Администраторы баз данных сталкиваются с целым рядом проблем при обслуживании PostgreSQL в Kubernetes: как обеспечить правильную репликацию данных, как настроить автоматическое переключение при. . .
|
Async/await в TypeScript
run.dev 06.04.2025
Асинхронное программирование — это подход к разработке программного обеспечения, при котором операции выполняются независимо друг от друга. В отличие от синхронного выполнения, где каждая последующая. . .
|
Многопоточность в C#: Синхронизация потоков
UnmanagedCoder 06.04.2025
Многопоточное программирование стало неотъемлемой частью разработки современных приложений на C#. С появлением многоядерных процессоров возможность выполнять несколько задач параллельно значительно. . .
|
TypeScript: Классы и конструкторы
run.dev 06.04.2025
TypeScript, как статически типизированный язык, построенный на основе JavaScript, привнес в веб-разработку новый уровень надежности и структурированности кода. Одним из важнейших элементов этой. . .
|
Многопоточное программирование: Rust против C++
golander 06.04.2025
C++ существует уже несколько десятилетий и его поддержка параллелизма постепенно наращивалась со временем. Начиная с C++11, язык получил стандартную библиотеку для работы с потоками, а в последующих. . .
|
std::vector в C++: от основ к оптимизации производительности
NullReferenced 05.04.2025
Для многих программистов знакомство с std::vector происходит на ранних этапах изучения языка, но между базовым пониманием и подлинным мастерством лежит огромная дистанция. Контейнер std::vector. . .
|