Форум пользователей Visio

Форум по вопросам применения и программирования в Visio
Текущее время: 28 мар 2024, 18:40

Часовой пояс: UTC + 3 часа [ Летнее время ]


Правила форума


При размещении файлов предпочтительным является формат vsd (а не vsdx/vsdm)
Размещая ваши вложения на форуме не используйте имена файлов содержащих кириллицу, в противном случае файл будет иметь имя .<расширение файла> !

Для форматирования ваших сообщений используйте BBCodes, описание используемых на форуме BBCodes.



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: САПР-АСУ :: База данных в Excel
СообщениеДобавлено: 01 мар 2023, 01:12 
Не в сети
Ветеран

Зарегистрирован: 26 авг 2019, 21:07
Сообщений: 267
Использую Visio c: 2019
Очков репутации: 11

Добавить очки репутацииУменьшить очки репутации
САПР-АСУ :: База данных в Excel

База данных на основе Excel состоит из:
SAPR_ASU_Izbrannoe.xls - основной файл
SAPR_ASU_EKF.xls, SAPR_ASU_Schneider.xls, ... - файлы прайс-листов производителей

Использование БД в проекте происходит через формы, пользователь не видит окна Excel.
95% потребностей реализовано в интерфейсе, остальное можно легко сделать,
открыв сам файл Excel и сделать непосредственно в нём.

SAPR_ASU_Izbrannoe.xls - содержит часто используемые компоненты и наборы, состоящие из нескольких элементов.
Также там содержатся настройки прайс-листов и список единиц измерения количества товара.

SAPR_ASU_EKF.xls, SAPR_ASU_Schneider.xls, ... - файлы прайс-листов производителей
Добавление нового прайс-листа сделано через мастер в виде диалога выбора файла и листа.(Настройки проекта->Настройки БД->Запустить мастер)
В процессе макросом преобразуется артикул к типу "Текст" (стандартные средства не работают)

Сам прайс перед добавлением нужно подготовить:
1. Удалить все строки выше заголовков столбцов
2. Удалить лишние столбцы
3. Заголовки столбцов назвать также, как в приведённых примерах готовых прайсов: Артикул, Название, Цена, Единица, Категория, Группа, Подгруппа
4. Заменить все единицы измерения на: шт., уп., м., кг., т., компл.
5. Заменить все пустые строки на значащие, а пустые фильтры на: Нет категории, Нет группы, Нет подгруппы
6. Значения в столбце Артикул должны быть уникальными

Вариант работы БД в Access остался. Необходимо перекомментировать соответствующие строки в макросе AddDBFrm модуля DB_Excel

Содержимое спрятано под спойлер ↓
Спойлер:
'Активация формы выбора элементов схемы из БД.
Public Sub AddDBFrm(vsoShape As Visio.Shape) 'Получили шейп с листа
Set colProcessHandle = New Collection
GetAllExcelProcess
' Load frmDBPriceAccess
' frmDBPriceAccess.run vsoShape 'Передали его в форму

Load frmDBPriceExcel
frmDBPriceExcel.run vsoShape 'Передали его в форму
End Sub

Плюсы:
1. Намного легче добавлять новые прайсы Excel с минимальными переделками, в отличии от создания БД в Access
2. Проще редактировать данные непосредственно в файле Excel, если это необходимо, в отличии от БД в Access
Минусы:
1. Более низкая скорость чтения данных по сравнению с БД в Access
2. Более низкая скорость работы интерфейса в целом, по сравнению с БД в Access, из-за особенностей работы с Excel
Особенности:
У Excel есть 2 известные, не решенные, проблемы:
1. Остающийся висеть в памяти процесс, после завершения приложения Excel в коде VBA.
2. Утечки памяти при доступе через ADO к, уже открытому, файлу Excel
Из-за этого приходится, многократно, программно открывать и закрывать excel application и ADODB connection, а также убивать процессы Excel открытые через VBA.
Скорость работы можно было бы увеличить не закрывая каждый раз открытые коннекшоны и аппликейшоны, но при этом начинается такая непредсказуемая дичь, что оно становится непригодным для использования.
Особенно доставляет, когда всё правильно завершаешь, но процесс excel висит в памяти, думаешь ну и ладно +10мб к моим 16гигам, создаёшь новую переменную excel application, а она каким-то хером образом ссылается на тот недобитый процесс, в котором всё уже закрыто...

_________________
САПР-АСУ
https://github.com/gtfox/
YouTube


Последний раз редактировалось gtfox 01 мар 2023, 01:24, всего редактировалось 1 раз.

Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
 Заголовок сообщения: Re: САПР-АСУ :: База данных в Excel
СообщениеДобавлено: 01 мар 2023, 01:15 
Не в сети
Ветеран

Зарегистрирован: 26 авг 2019, 21:07
Сообщений: 267
Использую Visio c: 2019
Очков репутации: 11

Добавить очки репутацииУменьшить очки репутации
Виктор-АПТ в сообщении писал(а):
Цитата:
БД Access. Работа с БД в Visio - через формы VBA.
Это конечно круто, прям как у Олега (Obsidian), но сильно сократит количество пользователей. Может я сужу по себе, но иметь базу данных материалов (ещё и с ценами) в Access не многие могут себе позфолить? Может всё таки - Excel? :)

По просьбам трудящихся переписал БД для работы с файлами Excel.
Это позволит проще добавлять прайсы и редактировать их из Excel

Изначально, я переписал весь код модулей и форм под работу через стандартные, для Excel, методы работы через VBA.
И, когда я таки решил протестировать это всё на нормальном объёме данных, выяснилось, что 60 000 записей будут передаваться десятки минут, когда Access это делает 2-3 сек.
Потом я ограничил вывод данных в листвью в 500 строк и мои приемлимые 2-3 сек появились, но мой этузиазизм упал ниже плинтуса.
Потом я узнал, что ADODB может получать данные не только из реляционных БД, но и окуда угодно, хоть из текстового файла.
Затем, уже без особого желания, опять, переписал всё под чтение через ADODB из Excel. Запись новых данных и удаление остались по стринке, без SQL

На данный момент чтение 60 000 строк укладывется в 2-3 сек. поэтому я считаю, что завершил переделку БД под Excel
Код макросов можно уменьшить, оптимизоровать, почистить, но я пока не хочу, главное работает.

_________________
САПР-АСУ
https://github.com/gtfox/
YouTube


Пожаловаться на это сообщение
Вернуться к началу
 Профиль  
Ответить с цитатой  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 2 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы можете начинать темы
Вы можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Вы можете создать форум бесплатно PHPBB3 на Getbb.Ru, Также возможно сделать готовый форум PHPBB2 на Mybb2.ru
Русская поддержка phpBB