|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
|
Необходима консультация по поводу организации взаимодействия Access и Excel02.03.2016, 17:35. Показов 2007. Ответов 24
Метки нет (Все метки)
Добрый день всем.
Сначала вкратце опишу предысторию. Есть мебельный салон, который имеет склад, производственный цех и т.д. Соответственно салон работает с поставщиками (закупка товара) и покупателями (заказы на производство мебели). В принципе, стандартная складская схема работы. Весь складской учет я сделал, само собой, в базе Access. Но вот что касается именно калькуляции, расчета размеров изделий (всякие там шкафы, столы и т.д.), то у заказчика есть неплохие наработки в виде экселевских файлов-шаблонов, в которых формулами забиты все эти расчеты количества необходимых материалов исходя из размеров шкафа и т.д. Поскольку заказчик весьма дорожит этими наработками (да и я сам, если честно, особо не горю желанием перетаскивать все эти расчеты в базу, т.к. с этим делом можно загребтись надолго (а этих шаблонов довольно таки много, и в каждом - свои принципы расчета), да и незачем изобретать велосипед), то было решено делать "связку" базы с экселевскими файлами. То есть к каждому заказу в базе привязывается адрес экселевского файла, в котором лежит вся калькуляция. Зашел в базу, открыл карточку нужного заказа, нажал кнопку - и открылся соответствующий ему экселевский файл. До этого момента все пока что ясно и прозрачно. А вот дальше начинаются вопросы. Заказчик хочет, чтобы подбор комплектующих в заказ происходил тоже в Экселе. То есть там в файле будет отдельный лист, куда нужно будет добавлять товары со склада (то есть данные туда будут браться из базы Акса). Я так понимаю, мне нужно будет в экселевском файле как-то организовать связь с таблицей товаров из Акса? Почитал в инете на предмет этого, нашел как добавить подключение, только вот не совсем понял - в экселевском файле на отдельном листе создастся копия таблицы Товары из базы?.. Или же можно просто установить связь без копирования всей таблицы (т.к. она очень большая и в файле заказа не нужна абсолютно)? Я так вижу, было бы идеально сделать добавление товара в определенный столбец экселя путем выбора товара из выпадающего списка (а источником данных для списка как раз и должна быть таблица Товары из базы Акса). Это же можно сделать в Экселе?.. Вторая часть вопроса. Допустим, пользователь понавыбирал товары в Экселе, проставил нужное количество - и теперь эти данные нужно как-то "забрать" в базу, чтобы в базе правильно шел складской учет. То есть мне как-то нужно будет сделать перенос введенных данных с листа Экселя обратно в базу, в этот конкретный заказ. В принципе, как получать данные из Экселя в Акс я знаю... Но в данном случае, мне кажется, необходимо этот "обратный перенос" организовать именно со стороны Экселя, скажем так, то есть, например, чтобы после добавления всех нужных товаров пользователь нажал кнопку в экселе - и данные перенеслись в базу... Потому что мне почему-то кажется, что хранить информацию о составе заказа именно в файле Экселя, и получать ее в базе путем запроса к файлу - это совсем не есть хорошо и будет нереально долго, когда, например, нужно будет увидеть какие-то общие цифры и т.д. Потому и вижу именно такой вариант. В общем, очень хотелось бы услышать ваши советы и общие соображения специалистов по поводу нюансов и вообще как лучше это сделать. Хотя бы в общих словах, чтобы мне было за что зацепиться мыслью. Или, может, мне лучше с этим вопросом сходить в экселевскую ветку форума?.. Правда, я там практически ни разу не был и никого не знаю, а тут у нас такой уже родной коллектив единомышленников)....
0
|
|
| 02.03.2016, 17:35 | |
|
Ответы с готовыми решениями:
24
По поводу взаимодействия Excel и Access Необходима консультация по созданию БД Необходима консультация по поводу взаимодействия Excel и Access |
|
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|
| 02.03.2016, 19:47 | |
|
В екселевском файле можно сделать форму, это несложно, а в ней скажем ListView с данными акса. Юзер будет выбирать из формы, выносить на лист, править, что-то брать из ексель-файла. Потом весь лист запросом скачать обратно в акс и по определенному алгоритму раскидать по таблицам. Мне кажется так будет проще чем выгружать таблицы акса на лист екселя. Тем более, что инфы много и на лесте будет трудно ее найти. В форме все-таки проще. Хотя это и не привычная форма акса, но все же идеи те же. У формы есть события, есть процедуры событий, практически тот же ВБА, хотя объекты другие.
2
|
|
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
||
| 02.03.2016, 20:34 [ТС] | ||
|
То есть получается, я могу сделать форму с перечнем товаров, и юзер, например, отметит галочками, какие товары он добавляет в заказ - и эти отмеченные товары можно будет перенести из формы на лист, я правильно понимаю?
0
|
||
|
547 / 274 / 50
Регистрация: 03.04.2015
Сообщений: 926
|
|
| 02.03.2016, 22:25 | |
|
Попробуйте поюзать PowerQuery. Думаю, к вашей задаче очень даже актуально.
0
|
|
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
||
| 04.03.2016, 09:33 [ТС] | ||
|
Правда, на форме сделал не ListView, а просто пару выпадающих списков для выбора товара. Вы не могли бы, пожалуйста, на этом примере показать, как правильно "прицепить" данные из базы к выпадающим спискам на форме?.. Думаю, что остальное (как добавить выбранные данные на лист) я и сам сделаю, у меня основной вопрос именно в привязке данных, причем так, чтобы они не добавлялись сначала на лист экселя из акса, а брались оттуда напрямую. Если не затруднит, научите, пожалуйста, буду очень признателен. А то я вчера пытался найти этот момент в учебниках и интернете, но что-то безуспешно... Заранее большое спасибо)
0
|
||
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
|
| 04.03.2016, 12:15 [ТС] | |
|
Вот я нашел у поля со списком на пользовательской форме (в экселевском файле) свойство RowSource, а как в него запихнуть связь с таблицей в базе Акса - не соображу... Как говорится, плохо быть по пояс деревянным)... Или я не в ту сторону думаю, и листбокс нужно как-то по-другому заполнять, программно?.. И если да, то, опять же, как правильно для этого установить связь с базой?..
0
|
|
|
шапоклякистка 8-го дня
|
|
| 04.03.2016, 13:21 | |
|
Kkarn, в форуме по экселю и vba вам скорее ответят на все эти вопросы.
0
|
|
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
|
| 04.03.2016, 13:22 [ТС] | |
|
texnik-san, А я там тоже задал... И тишина) Не, все-таки наш Аксовский форум - мне как-то более родной и душевный)).
0
|
|
|
Модератор
|
|
| 04.03.2016, 13:24 | |
|
хорошая компания подобралась
на другие прихожу --там какое запустение
0
|
|
|
шапоклякистка 8-го дня
|
|
| 04.03.2016, 13:26 | |
|
А давайте решать вашу задачу все-таки прямо из аксес, а?
Делаете форму для ввода исходных данных заказа в аксесе. Автоматизацией открываете экселевский файл и в нужные ячейки записываете нужные значения. Запускаете экселевские макросы (они доступны, если описаны как паблик). Автоматизацией же считываете результат вычисления. Закрываете эксель.
0
|
|
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
|||
| 04.03.2016, 13:36 [ТС] | |||
|
Кстати, вас, милые дамы shanemac51 и texnik-san - с приближающимся праздником! ![]() ![]() ![]() ![]() ![]() Добавлено через 3 минуты Добавлено через 5 минут По сути, у меня "затык" - именно на моменте подключения из экселя к таблице акса. В остальном я уже понаходил материалы, поначитался под завязку, пока вроде бы все понятно, как там дальше в экселе делать, но без подключения данных - не могу двинуться дальше. В принципе, можно, конечно, сделать в файле подключение к данным на отдельном листе... И потом этот лист скрыть, и брать для выпадающих списков инфу уже с него. Хм. Надо подумать в эту сторону. Тем более, что фактически-то на листе не будет содержаться информация (что привело бы к ненужному "раздуванию" размеров файла экселевского), а только как бы ссылка на таблицу в базе...
0
|
|||
|
26826 / 14506 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
|||||||
| 04.03.2016, 13:44 | |||||||
1
|
|||||||
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
|
| 04.03.2016, 17:29 [ТС] | |
|
mobile, спасибо! Я так понимаю, это код можно поставить на событие инициализации формы? Или самого списка? А потом присвоить рекордсет свойству rowsource списка?
0
|
|
|
шапоклякистка 8-го дня
|
||
| 04.03.2016, 17:32 | ||
|
1
|
||
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
||
| 04.03.2016, 19:24 [ТС] | ||
|
В принципе, имея рекордсет, можно организовать и заполнение поля из него...
0
|
||
|
шапоклякистка 8-го дня
|
|
| 04.03.2016, 20:01 | |
|
. Не работает.
0
|
|
|
547 / 274 / 50
Регистрация: 03.04.2015
Сообщений: 926
|
|
| 05.03.2016, 02:05 | |
|
PowerQuery не подошёл? Microsoft ведь уже сделала инструмент для взаимодействия, можно пользоваться.
1
|
|
|
шапоклякистка 8-го дня
|
|
| 05.03.2016, 08:46 | |
|
С интересом и удовольствием прочитала про Power Query (и покрылась пупырышками зависти и намерением таки перейти на 2010). Но в данном конкретном случае - не оно.
1
|
|
|
459 / 246 / 15
Регистрация: 29.10.2014
Сообщений: 1,084
|
|
| 05.03.2016, 15:47 | |
|
Предлагаю брать данные из Акса, запуская макрос в Эксе, помещать полученные данные скажем на Лист2, а на Листе1 в ячейках со списком их просматривать и выбирать. Только Экс я высылаю в .xlsm формате. Если данные в ячейках нужно просматривать в формате .xlsx,то данные придется брать из .xlsm формата.Это уже три файла. В макросе записан адрес файла Акса просто на диске d,туда его и поместить. А насчет получения в Аксе итогов работы-мб связанную таблицу сделать, в которой все Экс-данные будут отражаться.Да еще, в литературе хотя предлагаемый макрос описан, но для конкретного случая.По месту требует доработки. А файл Акса-здесь д.быть в формате .mdb
1
|
|
|
902 / 292 / 50
Регистрация: 02.12.2014
Сообщений: 1,229
|
|
| 06.03.2016, 13:06 [ТС] | |
|
corbis, Извиняюсь, я пока так и не прочитал про него. Надо будет посмотреть обязательно.
commun, Спасибо за то, что уделили внимание) Обязательно посмотрю Ваш вариант. Так, глядишь, и соберу по кусочкам своего чудо-Франкеншейна))
0
|
|
| 06.03.2016, 13:06 | |
|
Помогаю со студенческими работами здесь
20
Необходима консультация Необходима консультация Друзья! Необходима консультация
Необходима помощь в организации сети Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
|
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|