Помогите перенести информацию из базы данных в акт выплненных работ

Автор egorov060, 28 ноября 2011, 18:44

0 Пользователи и 1 гость просматривают эту тему.

egorov060

Добрый день!
У меня есть база клиентов и акт выполненых работ. Мне надо что бы щёлкая например по номеру строки и информация о клиенте переносится в акт или можно по автофильтру, я выбираю в нём фирму и он переносит нужную мне информацию в акт.

Помогите пожалуйста реализовать данную задачу

Прикрепляю примерную базу и в ней же АКТ

Зарание спасибо!

[вложение удалено Администратором]

JohnSUN

Добро пожаловать на форум!
Уточнение: это окончательная форма акта или просто демонстрационная заготовка? Ну, например, подписи под перечнем работ будут проставляться?
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

neft


egorov060

Цитата: JohnSUN от 28 ноября 2011, 18:21Уточнение: это окончательная форма акта или просто демонстрационная заготовка? Ну, например, подписи под перечнем работ будут проставляться?
да, демонстрационная и подписи тоже будут

egorov060


JohnSUN

Просто меня смутили все эти формулировки - "приемки-сдачи выполненных работ" вместо "сдачи-приемки работ", "настоящий составлен в соответствии" вместо "ООО «Кафе» в лице директора Иванова И.И., действующего на основании Устава, в дальнейшем - Заказчик, с одной стороны, и ООО «КВН», в лице инженера...". Потому и решил, что это только демка-заготовка, а не окончательный документ.

Теперь по сути вопроса.
У задачи есть как минимум три решения:
1. В Calc'е все сделать на одних только формулах. В одном листе накапливать все нужные данные, в отдельных листах сделать печатные формы по этим данным (сам акт, какую-то таблицу-отчет о проделанных работах за период и заработанной денежке, акт взаиморасчетов с конкретным клиентом и еще что-нибудь в этом роде). Основные функции, которые будут использоваться в таком варианте: VLOOKUP(), MATCH(), INDEX(), OFFSET(), INDIRECT(), CONCATENATE()... Ну, всякие там IF() и SUM() само собой тоже будут.
Достоинств у такого варианта масса: не нужно заботиться о безопасности макросов, работать будет под любой версией офиса, при необходимости можно будет даже в Excel'е запустить... И самое главное - без тебя с этой книгой никто не разберется, ты станешь незаменимым специалистом (в смысле, не сразу уволят).
Недостаток всего один: дерьмовое плохое решение. Нет, подобных книг существует валом! И они исправно работают. Но это не означает, что такой подход правильный. Вот один пример: в уже готовую и давно работающую книгу нужно вставить, скажем, идентификационный код Заказчика. Представляешь себе объем телодвижений для такой операции? И как только закончишь возится с этим улучшением - нужно будет добавить банковские реквизиты...
Опять же, все уже внесенные данные доступны любому, кто откроет книгу... Ладно, если посмотрит и закроет без изменений. А если потычет мышкой в разные клеточки?
2. В том же Calc'е все сделать с помощью макросов - вносить данные в форму, проверять тщательно и записывать на скрытые листы книги. А по отдельной кнопке на форме заполнять данными шаблон акта и выводить на печать...
Достоинства у такого варианта тоже есть: данные более-менее защищены, если чего и испортят случайно, то не больше одной-двух записей. Вводиться данные будут не в клеточки Calc'а, а в поля формы (как в настоящей взрослой программе). И опять же - без тебя с этой штукой никто не разберется.
И недостатков побольше: под Excel'ем эту штуку уже не запустишь, при отсутствии опыта написания макросов работа над проектом может растянуться на месяцы, изменение структуры данных тоже потребует пересмотра и правки кода...
3. Забыть о страхе перед базами данных, прочитать две-три статьи по Base, открыть его, создать новую базу, несколько раз запустить мастера создания таблиц, выбрать из списка заготовок подходящие по смыслу и в несколько щелчков закончить создание таблиц. Установить связи между таблицами, чтобы Base знал, что в одном акте может быть несколько работ, а у одного клиента может быть несколько ККМ (побольше бы таких!)... Опять же с помощью мастеров сделать формы ввода данных и печатные формы... Сохранить и идти пить пиво.
Достоинство всего одно, но весомое: именно так нужно делать. Calc - это все-таки только калькулятор. Его основная задача - считать. То что он умеет хранить данные или обрабатывать строки не означает, что он обязан это делать хорошо.
Недостаток: нужно забыть о том, что базы данных это что-то неимоверно сложное типа MSSQL, которому учиться нужно на специальных курсах многие месяцы. И... И вроде бы и всё, других недостатков у этого способа нет.

Четвертое решение - плюнуть и не делать - даже не рассматриваю
И пятое - хранить данные в листах Calc'а, а заполнять акт через Base - тоже не рассматриваю. Если уж все-равно придется использовать Base, то зачем тут Calc?

Ты уж извини, что не прикладываю готового решения в Calc'е. Хотел показать как печать акта оформляется выпадающим списком (Данные-Проверка-Диапазон ячеек) и функцией VLOOKUP()... Начал было рихтовать печатную форму - убирать все эти пачки пробелов для выравнивания, все эти объединения ячеек, менять формулировки на рекомендованные юристами... И обломался. Проще, пожалуй, с нуля сделать еще раз, но правильно
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

neft

Обалдеть!
Вот как нужно делать из мухи слона!

Цитировать2. В том же Calc'е все сделать с помощью макросов...

Всего-то написать макрос, который считывает данные из строки, в которой выделена ячейка, и записывает эти данные в соответствующие ячейки области АКТА, повесить на кнопку панели инструментов и всё.

JohnSUN

Цитата: neft от 29 ноября 2011, 14:16повесить на кнопку панели инструментов и всё.
Ага, и всё остальное. Опять спешишь с выводами.
Старайся не забывать, что когда человек задает вопрос, то обычно он хочет спросить немного больше, чем прозвучало. Умение улавливать невысказанное придет с опытом.
Ну, вот смотри, данный случай.
Действительно, вопрос был задан именно о переносе (копировании) накопленных данных из одного места в другое. И отвечали здесь, на форуме, на этот вопрос не один раз. Например, RFJ этим летом показал как по значению из одной ячейки заполнить целую форму. Без макроса, между прочим. Этот пример чуток изменить и худо-бедно получится требуемый акт сдачи-приемки.
Однако вчитайся в первое сообщение. "Есть база клиентов", "Прикрепляю примерную базу", прикреплённый файл тоже называется "база.ods". И что это означает? Что перед человеком стоит широкая задача: создать базу данных для ведения учета выполнения заказов. И будут в этой базе рано или поздно и клиенты со всеми их реквизитами, и перечень их оборудования, и список договоров на обслуживание, и фамилии инженеров, которые будут выезжать на объект, и перечни выполненных работ со сроками выполнения и с проставленными суммами и посчитанным НДС, и поступление платежей от клиента за проделанную работу... Но спрашивает только про один момент. Вроде как вы мне покажите как вот это сделать, а дальше я разберусь.
И уже отвечая на вопрос нужно делать поправку на это обстоятельство. Иначе своим ответом толкнешь человека на неправильный путь и заставишь ерундой зазря заниматься.
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

egorov060

Спасибо большое за ответ.

Понимаете акты мы (инженеры) все пишем в ручную и в один прекрасный день вся эта бюрократическая деятельность надоела)) хочется как-то автоматизировать этот процесс))
нам менеджер скидывает каждому раз в месяц свою базу клиентов в электроной таблице (ods)

JohnSUN

То есть, раз в месяц нужно распечатать всю пачку актов за уже выполненные работы и мотнуться по объектам чтобы их подписать? Тогда это как раз тот пятый вариант. Базе указывается в качестве источника данных книга от менеджера, а акты - через рассылку писем во Writer.
Или имеется в виду, что за месяц таблица у менеджера пополняется новыми клиентами и раз в месяц нужно синхронизировать его таблицу со своими данными?
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

neft

Цитата: egorov060 от 29 ноября 2011, 16:11
нам менеджер скидывает каждому раз в месяц свою базу клиентов в электроной таблице (ods)

Вот от этой базы и надо плясать. А не придумывать собственные БД.

JohnSUN

Другое решение - попинать менеджера. Или сменить. И пусть сбрасывает не свою уродливую табличку, а раздает каждому уже распечатанные акты. Инженеры деньги зарабатывают, а печатать бумажки - самая менеджерская работа
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

neft


JohnSUN

Тогда преподнести готовую базу в подарок. ;D
Но все равно свалить возню с бумажками на него. 
А то ведь на образец данных в демке смотреть жутко. Хочется верить, что это действительно только тестовые данные, набранные от фонаря, а не образец ежемесячного труда...

Да ладно, не обращайте внимания. Это во мне классовая злость бормочет - не люблю управленцев... В смысле, неумёх на высокооплачиваемых должностях. Нет, попадаются, конечно, и среди них крепкие профессионалы. Но, к сожалению, так же редко, как и хорошие программисты, инженеры, врачи...

Я бы последние сообщения перекинул куда-нибудь в О форуме и жизни > Разговоры обо всём
Владислав Орлов aka JohnSUN
Благодарить-не зазорно.
Подарить благо создателям офиса, нашему ресурсу, мне

neft

JohnSUN
Кроме "Разговоров обо всем", будет какое-нибудь решение?