Страницы: 1
RSS
Варианты динамического связывания нескольких таблиц между собой с возможностью построения общей сводной
 
Доброго дня, уважаемые планетяне!
Как-то делал ТУТ тему с очень частным случаем - сейчас же прошу помочь разобраться в вариантах исполнения/решения данного вопроса.

Введение: имеется несколько отдельных файлов, каждый из которых организован из минимально необходимого набора полей (по логике построения баз данных). Все базы ведутся в "умных" таблицах, которые расположены по 1 на листе. Каждый файл заполняется отдельным специалистом по ходу работы (динамическое обновление).

Как сейчас: в файле "как сейчас" я показал, как в данный момент я организую связь между таблицами, а именно – все они находятся в одной книге и соответствующие данные по ключу подтягиваются из зависимых таблиц через ИНДЕКС+ПОИСКПОЗ. Естественно, в таком виде и при реальных объёмах данных (более 7 связанных таблиц до 8 тыс. строк каждая) файл сильно тормозит и любому оператору необходимо открывать весь массив данных, чтобы редактировать 1-2 свои таблички.

Обозримые решения: PowerPiwot (непонятно, с чего начать и как будет выглядеть), организация связки с Access (есть небольшие наработки, но неизвестно, как поведёт себя в данном случае), надстройка «Прайс-лист» от Игоря (насколько я помню) - тут также неясно, можно ли получить желаемое через неё, SaveToDB (надстройка для Excel через SQL и вообще тёмный лес).

За сим прошу вас поделиться мыслями/замечаниями/предложениями/собственными примерами и советами по данной теме…
Изменено: Jack Famous - 25.08.2016 16:12:57
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:  файле "как сейчас" я показал
напишите тех.задание:
что откуда куда ХОТИТЕ (Т.К. НАДО!) вытянуть... НЕ описывайте промежуточные поля (которые вы уже сделали)... т.к. последовательность (работы без Поискпоз) будет другая (хотя логика схожая), опишите с нуля Что есть - Что надо (желательно кратко - вам самому будет легче понять что делать, если вы опишите, что вы хотите сделать)... нам пояснения уж точно не нужны... в автоматизации важны Шаги  ;)
Цитата
Jack Famous написал: непонятно, с чего начать
:excl: с начала (всё остальное забудьте):
Каковы входные данные без мусора (чистые)
Во что их надо превратить и КАК... Где итоговая таблица (которая, действительно, нужна - нужна сводная или обычная умная?) - в какой из книг его (итог) будете делать или отдельной книгой?..
Какие поля Ключевые для связи одной таблицы с другой и Какую с какой хотите связать? и КАК?
(вспомогательные поля забудьте, принцип БД - в вытягивании по Ключам)
P.S.
на SQL'е Поискпоз выполняется правильно составленными JOIN'ами - если есть все ключевые поля... (тогда и доп столбцы не нужны)... пример конструкции с JOIN в #43... смотрите примеры, пробуйте, когда почуствуете язык - легче будет спросить и понять ответ... если вы хотите начать знакомиться с новой темой... просто без лексики с вами сложно будет объясняться...
p.p.s. по PP, полагаю, так же...
хотя лично мне ещё не понятно, неужели без него никак... что в вашем случае вы хотите сделать с его помощью из того, что нельзя сделать SQL-запросом... ведь PP встроен только с 2016-го офиса... да и его вы не прогуглили, видимо, - иначе заметили бы, что "файлы с PP разных версий xl не всегда читаются на др версиях xl"... вы уверены, что он вам нужен?
если работа с файлами, а не с серверной БД - можно выиграть по скорости и просто написанием макросов на словарях?...
p.p.p.s. много инфо о нюансах работы с БД было рассмотрено на той ветке, куда оставила линк... тема баз данных, действительно, непростая... всё не уложить в одну ветку...
пока же звучит, как желание, чтобы сделали за вас... имхо
p.p.p.p.s назване темы - плохое! вариантов может быть куча и большая тележка... конкретный вопрос по xl нужен! - что не получается?.. не обессудьте - я вам лирики могу написать столько же (только времени не много), как вы, пока вы не определитесь с Умением Формулировать Свои (личные) Задачи и просить Помощь Предметно и Конкретно Определённо, а не теряться в своих файлах и терять там нас  8) ...
Изменено: JeyCi - 25.08.2016 21:11:02
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
JeyCi, доброго дня! Посмотрел ссылки - да, далековато мне до такого… Отвечаю по вопросам:
Пример: самая основа - уникальный список используемых материалов (постоянно пополняется и нужен для того, чтобы потом, в других книгах один и тот же материал нельзя было назвать по-другому, а нужно было выбрать из этого уникального списка). Далее, приход материала, где указываются накладные, счета-фактуры, поставщики и прочее с номером, датой, временем, материалом (выбрать из уникального списка), количеством материала и суммой по нему. Это связь один-ко-многим (1 документ на несколько материалов). В то же время в книге "Документы качества" на пришедшие материалы необходимо указать соответствующие документы качества - это уже "многие-ко-многим" (на 1 материал несколько документов и в 1 документе данные по нескольким материалам). Реализуется через уникальный номер скана документа (индекс). Дальше цепочка ещё больше - появляется списание материала в виде ведомости работ и так далее…
Основная идея - избавление от введения одних и тех же данных вручную. Как итог - минимизация ошибок из-за человеческого фактора.
Я в состоянии всё это провернуть в 1 книге, но "подтягивагия" через ВПР очень много жрут ресурсов (даже при условии пересчёта вручную). Наиболее вероятно - макросное решение (скорее всего, платное), так как другое требует уже основательной подготовки а времени для посещения семинаров пока не дают (в личное это медленно продвигается).
Как вы видите макросное решение?

P.S.: Общался с Игорем (excelvba.ru) - посоветовал вести всё в Access и вообще не задействовать Excel. Пока не знаю, как это будет, но, хотя бы понимаю логику программы и буду разбираться дальше
Изменено: Jack Famous - 26.08.2016 14:48:49
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал: Как вы видите макросное решение?
никак (не видела реальных данных, просто поставила в известность, что по скорости может быть быстрее, - нюансы времени на подключение где-то там по линку уже озвучены были, или на форуме точно)... но смотря какие данные и смотря какой макрос - возможно не один, - ищите макросы на словарях, адаптируйте под свою структуру своих ключевых полей... никак, потому что
Цитата
Jack Famous написал: Это связь один-ко-многим (1 документ на несколько материалов).
"многие-ко-многим" (на 1 материал несколько документов и в 1 документе данные по нескольким материалам).
не считаю,  что в этом суть... писала выше, главное Ключевые поля... а # документа - не считаю главным...
Цитата
Jack Famous написал: а времени для посещения семинаров пока не дают (в личное это медленно продвигается).
Jack Famous это для меня не повод переписывать вам всё, что уже есть, и выполнять работу за вас... если вы не знаете, как вы хотите и что вы делаете...
Цитата
Jack Famous написал: P.S.: Общался с Игорем (excelvba.ru) - посоветовал вести всё в Access
поскольку согласна с Игорем (про SQL писала в принципе, для Access ещё логичнее)... а разработка полноценной БД по такому разнообразию документов - это полноценный проект (который не вписывается в понятие Вопрос по xl)... имхо
Изменено: JeyCi - 27.08.2016 19:18:16
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
JeyCi, спасибо за развёрнутый ответ!  :idea: )))) Начну с Access, как получу добро на внедрение на работе. По итогам отпишусь… Если не пойдёт вернусь к макросам  ;)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
делал когда то похожее на работе.
в каждом файле оператора скрытые листи-справочники. обновление изтфайлов-источников макросом при открытии книги плюс возможность обновить отдельный справочник кнопкой.
сначала использовал sql, потом, когда дело дошло до полумиллиона строк в файле-источнике - перешёл на массивы - вышло почти в два раза быстрее.
с аксессом не хотел связываться тогда)
 
Dima S, добрый день! Очень заинтересовал ваш ответ )))
Цитата
с аксессом не хотел связываться тогда
А сейчас бы стали, если такая проблема возникла? Дело в том, что я как-то тоже сильно не уверен, каким образом будут в нём осуществляться некоторого рода связи…
Цитата
Dima S написал: обновление изтфайлов-источников макросом при открытии книги плюс возможность обновить отдельный справочник кнопкой.
я так понимаю, что обновление происходит без необходимости открывать файлы-источники?
Цитата
Dima S написал: перешёл на массивы - вышло почти в два раза быстрее
не припомните, сколько примерно занимало обновление книги с самым большим количеством связей?
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Доброе утро, планетяне! Возник ещё один вопрос по теме… Подскажите пожалуйста, вот умею я в 1 книге это всё настроить через формулы - а если разбросать по разным файлам и настроить связь между ними через ссылки…то есть формула ИНДЕКС+ПОИСКПОЗ и иже с ними будут ссылаться на другую(ие) книгу(и). Способен ли такой "примитивный" метод ускорить работу с каждой книгой в отдельности и, какие нюансы в таком подходе?…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Цитата
Jack Famous написал:  Способен ли такой "примитивный" метод ускорить работу с каждой книгой в отдельности и,
ответы на такие вопросы даёт только практика!! применения к конкретным файлам... проанализируйте сами Насколько Быстро и Удобно вам работать с такой структурой в применение к вашим данным?.. для сравнения проанализируйте альтернативы в применение к вашим данным... - только так узнаете ответ в применение к вашим данным!.. однозначных ответов быть не может... сами всё прочуствуете в процессе работы  в применение к вашим данным... ну зачем гадать  :( (это же потерянное время) - достоверности всё равно не будет...
p.s. хотя есть одно правило программирования: "пока работает - не трогай"...
Изменено: JeyCi - 29.08.2016 09:34:25
чтобы не гадать на кофейной гуще, кто вам отвечает и после этого не совершать кучу ошибок - обратитесь к собеседнику на ВЫ - ответ на ваш вопрос получите - а остальное вас не касается (п.п.п. на форумах)
 
JeyCi, это вопрос не по удобству - при разбиении оно только выиграет, т.к. на разные книги можно разные пароли для разных операторов поставить (хоть и примитивно, но раздельный доступ). Вопрос, скорее по бытродействию - при прочих равных, ускоряется ли работа с конкретной книгой, когда зависимые значения подтягиваются из других книг, а не в рамках 1 книги. С одной стороны, пересчёт будет производиться только между актуальными связями открытой книги (то есть с 2-4 другими книгами книгами, а не связи, что есть). С другой стороны, интуинтивно кажется, что связь внутри книги и между 2 книгами отличается в сторону первого (быстрее). Но вы правы - наверное слишком много переменных для ответа…
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Немного запоздалый ответ, но все же)
Цитата
А сейчас бы стали, если такая проблема возникла
наверное тоже нет - я подружился с MySQL ) с аксессом пробовал разбираться - со связью таблиц и прочим вроде все просто, а вот разработка интерфейса меня напрягает)
мне гораздо быстрее и проще в ексельном вба набросать что нужно, несмотря на аксессовские заготовки)
Цитата
обновление происходит без необходимости открывать файлы-источники?
обновление делал макрос, я не делал связей между книгами, ибо не доверяю)
Цитата
не припомните, сколько примерно занимало обновление книги с самым большим количеством связей?
как я уже писал - связей не было, соответственно скорость обновления зависела от скорости сети и в лучшие времена осуществлялась практически мгновенно.

выборка данных из базы в файл отчета занимала около 40 сек посредством SQL и менее 20, а потом, после модернизации, менее 10 секунд через массивы.
Страницы: 1
Читают тему
Наверх