САПР-АСУ :: База данных в 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, а она каким-то
хером образом ссылается на тот недобитый процесс, в котором всё уже закрыто...