ferzmikk
Дата: 04.07.2017 10:03:07
Здравствуйте!
На практике приходилось писать не мало сложных макросов на VBA через excel, которые формируют разные отчеты. Особенности:
1. Начиная с выгрузки данных с OLAP, обработки заголовков, дополнительной обработки данных, создание отдельных excel файлов, вставка вкладок, вставка таблиц и диаграмм, соответствующее оформление. Со временем часто дорабатывались эти макросы.
2. Сформированные файлы-отчеты рассылались по соответственному городу, каждый город в какие то колонки нужно ввести значения или выбрать значение из списка, потом получить обратно заполненные, сделать свод, провести некую обработку и получить некие обработанные таблицы. Какие то excel-файлы синхронизировались с другими excel-файлами. Есть риски, что файлы могут не синхронизироваться.
3. Если произошла доработка макроса, то пользователям отсылается доработанный файл.
4. При этом появляется необходимость иметь отдельные небольшие базы данных для хранения дополнительных справочников, сопоставлении, темповых таблиц, чем все хранить на отдельных excel-листах как справочные таблицы.
Получается тут не только автоматизация сложных отчетов, но и наличие небольшого электронного документооборота. Понимаешь, что писать макросы через excel же становится не эффективно при перечисленных задач. Надо переходить на другой уровень программирования.
Решение вижу такое - написать программку на VB.Net или С# как виндоус форма через Visual Studio. Пока экспериментирую с VB.Net. Открывается форма как меню, там размещены разные вкладки, кнопки, и каждая кнопка формирует свой отчет, есть кнопки по введению данных в дополнительные справочные таблицы. Эта программка будет устанавливаться каждому пользователю. Програмка имеет подключение не только к OLAP, но и к небольшой базе данных либо Microsoft Access, либо Microsoft Server (если разрешат).
Эта программка типа маленькой 1С или Axapta, но она специализированная под конкретную аналитику с небольшими бизнес процессами. Ничего лишнего. У нас есть Axapta, но работает с OLTP. А тут программка выгружает сразу из OLAP и сразу формирует нужные отчеты. С возможностью постоянной доработки.
1. Хотелось бы узнать Ваше мнение по данному решению. Что нужно учесть, какие подводные камни есть, у кого какой подобный опыт был и решал подобную проблему. Насколько эффективно выбрано данное решение?
2. Потом эта программка будет постоянно дорабатываться. Добавляться новые кнопки, дорабатываться какие то процедуры, изменения в структуре базе данных. Тут важно чтобы после изменения установленная программа у пользователей сама обновлялась. Или сделать подобное как у 1С у пользователей стоит как тонкий клиент и ему ничего переустанавливать не надо. Что тут надо учесть? Как тут надо правильно дорабатывать и обновлять так, чтобы без ущерба все было?
Roman Mejtes
Дата: 04.07.2017 11:39:45
можно вместо Access и MSSQL (который кстати говоря платные) использовать SQL-Lite, SQL там вполне себе обычный.
То, что вы описали можно сделать в качестве Excel Addin'а, который будет встраиваться в Ribbon Excel'я, иметь свои панели и прочее. Это более трудозатратно, но будет более осмысленно, как по мне. Так как отчеты у Вас всё равно формируются в Excel. Сам плагин можно рассылать и устанавливать как обычную программу (набор DLL файлов).
ferzmikk
Дата: 04.07.2017 11:45:27
skyANA |
---|
ferzmikk,
кто такие пользователи? сколько их? где сидят? |
В зависимости от того, что за отчет.
Для начала следует учесть, что есть excel-ий файл с макросом (далее буду называть
инструмент). И этот инструмент формирует отдельный excel-ий файл (далее -
отчет).
Возьму три отчета.
Для первого отчета. 6 пользователей, у которых инструмент. Они в разных городах. Это менеджеры. С помощью инструмента обновляют исходники, формируют отчеты и рассылают определенным пользователям. Формируется почти ежедневно. У отчета около 100 пользователей. Просто читают отчет. Сидят в разных городах. Это директора подразделении, начальники отдела продаж, супервайзеры.
Для второго отчета. 1 пользователь, у которых инструмент. Это аналитик. Формирует раз в месяц. 50 пользователей отчета. Читают отчет + заполняют данные в отдельных колонках, потом присылают обратно. Также в разных городах. Директора подразделении, начальники.
Для третьего отчета. 1 пользователь, у которых инструмент. Это другой аналитик. Формирует раз в месяц. 30 пользователей отчета. Для заполнения данных и обратно присылают. Также в разных городах. Директора.
ferzmikk
Дата: 04.07.2017 12:07:41
Roman Mejtes |
---|
можно вместо Access и MSSQL (который кстати говоря платные) использовать SQL-Lite, SQL там вполне себе обычный. |
SQL-Lite - как вариант. Я думал, что SQL-Lite используется только для разработки мобильных приложении. Если использовать SQL-Lite, то какие там минусы, ограничения? Вот например SQL у Access 1997 года, сильно ограниченный по возможностям по сравнению с Microsoft SQL Server: отсутствие темповых таблиц, отсутствуют функции нумерации строк, кросс и т. д. Очень много с ограничениями столкнулся с ODBC. Я правильно понимаю, они бывают и бесплатные, и платные?
|
---|
То, что вы описали можно сделать в качестве Excel Addin'а, который будет встраиваться в Ribbon Excel'я, иметь свои панели и прочее. Это более трудозатратно, но будет более осмысленно, как по мне. Так как отчеты у Вас всё равно формируются в Excel. Сам плагин можно рассылать и устанавливать как обычную программу (набор DLL файлов). |
Есть необходимость сделать более удобный и интуитивно понятный интерфейс, наличие кнопок, которые фомируют excel-файлы, работать с дополнительными справочными таблицами (не с боевой базой данных). Возможность делать отметки как в 1С типа "Провести" и потом отсылается на электронную почту типа как задача. Все таки VB.Net мощнее чем VBA.
Понимаешь, что надо делать более серьезный единый инструмент.
Dima T
Дата: 04.07.2017 12:41:14
ferzmikk |
---|
Roman Mejtes |
---|
можно вместо Access и MSSQL (который кстати говоря платные) использовать SQL-Lite, SQL там вполне себе обычный. | SQL-Lite - как вариант. Я думал, что SQL-Lite используется только для разработки мобильных приложении. Если использовать SQL-Lite, то какие там минусы, ограничения? Вот например SQL у Access 1997 года, сильно ограниченный по возможностям по сравнению с Microsoft SQL Server: отсутствие темповых таблиц, отсутствуют функции нумерации строк, кросс и т. д. Очень много с ограничениями столкнулся с ODBC. Я правильно понимаю, они бывают и бесплатные, и платные? |
Платный Access если его целиком ставить, ODBC драйвер для Access`а бесплатный, качай с сайта МС и пользуйся. MSSQL тоже имеет бесплатную Express версию, правда
с ограничениями функционала. Есть другие бесплатные СУБД (MariaDB, Postgres и т.д.)
Как понимаю задача не требует легкой переносимости приложения, поэтому лучше взять полноценную СУБД.
Если все пользователи всех подразделений/филиалов соединены в единую внутреннюю сеть, то БД можно общую сделать, т.е. одну на всех. Еще лучше сразу делать web-интерфейс и пусть через браузер работают хоть откуда.
dvim
Дата: 04.07.2017 12:58:13
|
---|
Решение вижу такое - написать программку на VB.Net или С# как виндоус форма через Visual Studio |
Для вашей задачи - вполне разумно.
Далее- ограничений MS SQL Express вам хватит вполне, использовать другую базу при ваших объемов и стеке .Net/Excel не советую.
Вопрос обновления решается по-разному.
Все зависит от количества пользователей и сложности задачи.
Простейший вариант на "до 10" пользователей - банальный запуск программы с 1 сетевой папки. Работает и не требует никаких телодвижений.
Второй вариант - запуск через программу обновления. Она проверяет в сетевой папке новые файлы и библиотеке и копирует их.
Третий - полноценный софт для обновления и/или использование MSI
Судя по вашим планам, я бы начал сначала с первого.