Страницы: 1
RSS
Подтянуть значение из Access в Excel
 
Всем добрый вечер!
Подскажите, насколько сложно будет подтянуть значение из Access в Excel. Пример на фото, подтянуть в красную ячейку Аникина по номеру 123456.

Скрытый текст


Файлы бы приложил, но БД для Акцесса весит 1МБ даже пустая почему-то.
Файл "База" там одна строчка как на примере-картинке)
Спасибо.
Изменено: whateverlover - 28.03.2020 10:56:11
 
Элементарно, MsQuery с параметром и все мышкоклацанием создается.
По вопросам из тем форума, личку не читаю.
 
БМВ, а примерчик можно?)
 
Доброе время суток
Цитата
whateverlover написал:
а примерчик можно?)
Только на базе вашего примера.
Цитата
whateverlover написал:
БД для Акцесса весит
Вы ещё не изучили возможность zip-архивов?
 
Андрей VG, прикрепил архив с базой)
 
C:\Users\mic\Downloads\Database1.accdb в параметрах соединения заменить на реальный путь
По вопросам из тем форума, личку не читаю.
 
БМВ, класс! спасибо, все работает и обновляет, если меняю значения)
А допустим моя таблица начинает расти, я могу как-то этот запрос к БД расширять? Или для каждой ячейки отдельно так надо будет делать руками?(

Чтобы теперь подтянуть Иванова? Но это условно, строк будет очень много.
Скрытый текст
 
whateverlover, тогда надо линковать две таблицы, но это уже другая история.
По вопросам из тем форума, личку не читаю.
 
Т.е. этот способ подходит только для одной строки?
В примере увеличил до 10 строк примерно. Как быть в таком случае?
Можно ли этот запрос записать на VBA, например, и циклом пройтись и добавить 10 таких запросов?
Или Excel-евскую базу загрузить в Access, там подтянуть и выгрузить обратно в Excel?
Что из этого можно и целесообразно реализовать? (все с учетом того, что это пример, в реальности строк много)

Спасибо.
Изменено: whateverlover - 28.03.2020 22:14:53
 
Цитата
whateverlover написал:
Можно ли этот запрос записать на VBA,
А зачем? Можно чуть расширить запрос и выводить связанные таблицы на отдельный лист. Вариант. файлы База.xlsx и Database1.accdb должны находится в папке c:\path.
P. S. Большой совет - прочитать про типы данных в базах данных, чётко определить их в Excel и не надеяться, что движок БД будет думать...
 
Андрей VG, Андрей, привет. Ну и на другой лист не нужно тогда, только убрать ненужное и прикрутить обновление по изменению в первой таблице.
Все в C:\Temp  :-)
Изменено: БМВ - 29.03.2020 10:35:11
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
не нужно
Привет, Михаил.
Всё может быть - но это уже макросы. А в сущности, зачем они на данном уровне постановки задачи? Ну, да ТСу виднее, только он в курсе, что с чем зачем и куда надо всё сделать. А самое главное насколько это соответствует - ни шагу влево вправо... :)
P. S. Я бы не очень надеялся на то, что запрос вернёт строки из таблицы Access именно в том порядке, как они идут в таблице Excel.
Изменено: Андрей VG - 29.03.2020 10:42:27
 
Цитата
Андрей VG написал:
Я бы не очень надеялся на то, что запрос вернёт строки из таблицы Access именно в том порядке, как они идут в таблице Excel.
Вроде должен. Если честно я тоже об этом думал и для подстраховки оставить лист с результатом, а на первом листе просто VLOOKUP формулой сделать можно, но вроде порядок должен соответствовать левой таблице при связке.
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
Вроде должен
Посмотрим, что скажет ТС. Он заходил, но похоже решил уйти по английски - никого не беспокоя вопросами, комментариями и, упаси бог, благодарностями :)
 
Андрей VG, нет нет, я так не уходил)
Просто удалялся тестировать предложенные варианты, а тестировать их, к сожалению, могу только по глубоким вечерам и ночам)
Оба вариант классно работают, но вот вариант Андрей VG прямо то, что нужно! Даже лучше, чем нужно, мне обычно ВПР подтягивал одно значение, а тут подтягивает все.)
А как это называется, что вы сделали? Думаю, когда на рабочую базу переносить буду возникнут сложности(
Мне значит потом нужно будет создать подключение между уже рабочими моими файлами и поменять пути? Тут, смотрю, номера столбцов нигде не указываются. Только пути к файлам и заголовки.

Скрытый текст


А так все супер, спасибо! Прямо чувствую, как моя работа упрощается)
 
А что значит TDE и TDA? Почему для Excel-файла столбца "Номер" берется TDE, а для Access столбца "Номер" берется TDA? Или это вообще не про то?
В ваших файлах все работает и когда другие данные туда подставляю работает, а когда переношу все на рабочие файлы, какие-то ошибки появляются.
Если не затруднит, объясните, что за TDE TDA, может ошибки и пропадут) гугл не особо помог.

Ошибки какие только не вылезали) Самая последняя на данный момент:
"Ядро СУБД Microsoft Access не может открыть файл "C:\Users\BaranovVO\Desktop\New folder\ОиО ЦО.xlsx" или записать в него данные. файл уже открыт другим пользователем для монопольного доступа, либо требуется разрешение на просмотр и запись данных"

Вот это вставляю в текст команды:
Код
SELECT TDE.Контрагент, TDA.Договор, TDA.Дебет, TDA.Кредет
FROM [Excel 12.0;Database=C:\Users\BaranovVO\Desktop\New folder\ОиО ЦО.xlsx;HDR=YES].[Лист1$] TDE
Left Join ОСВ TDA
ON (TDE.Контрагент = TDA.Контрагент)

При этом если текст команды оставить пустым, то таблица полностью выгружается нормально из Access, т.е. все доступы есть, естественно, почему же когда добавляю текст команды такая ошибка.

Изменено: whateverlover - 31.03.2020 01:21:46
 
Цитата
whateverlover написал:
TDE TDA,
это условное название таблиц. Андрей просто назвал от Table Data Excel и  Table Data Access.
По вопросам из тем форума, личку не читаю.
 
вроде заработало все, ошибки этой больше нет) Спасибо)
А в этой теме можно вопрос задать, касающийся ее косвенно?
Код
SELECT TDE.Контрагент, TDA.Договор, TDA.Дебет, TDA.Кредет
FROM [Excel 12.0;Database=C:\Users\BaranovVO\Desktop\New folder\ОиО ЦО.xlsx;HDR=YES].[Лист1$] TDE
Left Join ОСВ TDA
ON (TDE.Контрагент = TDA.Контрагент)

Вот код моего запроса, он подтягивает значения по полному совпадению.

А можно ли чтобы подтягивал по началу значения? Т.е. если в Excel контрагент указан Иванов, то подтянул всех, у кого начинается со слова Иванов.

Что-то наподобии как в Excel через звездочку). Так можно?
Код
ON (TDE.Контрагент* = TDA.Контрагент)

 
ON (TDA.Контрагент LIKE TDE.Контрагент% ) если память не подводит
По вопросам из тем форума, личку не читаю.
 
БМВ, спасибо, попробую.
А такой вопрос: в Aceess то понятно, как он понимает что шапка у столбца "Контрагент". А как он это понимает в Excel? Моя таблица же не отформатирована как умная. Как он понимает по значению TDE.Контрагент, что я имею ввиду именно этот столбец.
Цитата
БМВ написал:
это условное название таблиц. Андрей просто назвал от Table Data Excel и  Table Data Access.
и вот здесь, если это лишь условные обозначения, то как программа понимает что через TDE я обращаюсь к базе Excel, а через TDA к базе Access?)
т.е. я могу указать (TableDataAccess.Контрагент LIKE TableDataExcel.Контрагент%) и программа все равно меня поймет?
 
Так на то функции VBA есть
Писано на коленке, работоспособность не гарантируется, токмо направление.
Код
ON (Left(TDE.Контрагент, Len(TDA.Контрагент)) = TDA.Контрагент)
 
подключение к access  указано в самом подключении.
, а к Excel таблице указано непосредственно в запросе. Там же указано HDR=YES, что означает что первая строка заголовок. Таблицы можно называть хоть Даша и Маша. Главное обозначить.
По вопросам из тем форума, личку не читаю.
 
БМВ, спасибо)
RAN, спасибо! Я думал в строке с запросом функции VBA не работают) там же свои какие-то SQL команды  8-0
 
Цитата
RAN написал:
Так на то функции VBA есть
ну это и не VBA функции в данном случае. Все вам котам накодить.
По вопросам из тем форума, личку не читаю.
 
Не совсем понял, как вообще была создана эта таблица с запросом в соединении? Это вроде бы обычная умная таблица, но у нее есть свойство внешних данных.
 
Цитата
Ungrateful написал:
Это вроде бы обычная умная таблица, но у нее есть свойство внешних данных.
Дело в том что, как таковые Умные таблицы, появились позднее чем появились QueryTable. А вот просто таблицы, фактически именованные области с определенными свойствами, были давно. А создано элементарно через запрос к внешним данным.
По вопросам из тем форума, личку не читаю.
 
БМВ, все, спасибо, дошло. Всегда делал через VBA, и такой вариант от меня ускользнул )
Страницы: 1
Наверх