Выйдем из режима проекта VBA и вернемся листы книги Excel.
Лист1 переименуем в «ПАРАМ», на котором разместим основные данные необходимые для организации связи с базой данной:
- путь к папке, где находится база данных;
- имя азы данных;
- тип провайдера (поставщика данных).
Пример таблицы с параметрами показан в Таблице 1 ниже.
Из описания видно, что мы выбираем базу, созданную в СУБД Access, а в качестве провайдера используем драйвер фирмы MS - Microsoft.Jet.OLEDB.4.0.
Таблица 1. Пример основных параметров для проекта (Лист «ПАРАМ»)
Номер
Название параметра
Значение параметра
Путь к базе
D:\Хранилища данных\OLAP технологии\Northwind\
Название базы
Northwind_Mart.mdb
Драйвер провайдера
Microsoft.Jet.OLEDB.4.0
Теперь создадим место для хранения списка запросов. В нашем проекте их будет 10. Для этого Лист2 переименуем в «Запросы» и разместим на нем таблицу запросов, фрагмент которой показан в таблице2.
Все запросы необходимо предварительно проверить с среде Access и текст SQL-запроса перенесем на лист «Запросы». Фрагмент таблицы запросов показан ниже:
Таблица 2. Фрагмент таблицы запросв к базе данных Nothwind.mdb
номер
Запросы
SQL-форма запроса
Суммирование продаж по месецам
SELECT Time_Dim.Month, Sum(Sales_Fact.LineltemTotal) AS [Sum-LineltemTotal] FROM Time_Dim INNER JOIN (Product_Dim INNER JOIN Sales_Fact ON Product_Dim.ProductKey = Sales_Fact.ProductKey) ON Time_Dim.TimeKey = Sales_Fact.TimeKey WHERE (((Time_Dim.Year)=1997)) GROUP BY Time_Dim.Month
Суммирование продаж по сотрудникам
SELECT Employee_Dim.EmployeeName, Sum(Sales_Fact.LineltemTotal) AS [Sum-LineltemTotal] FROM Time_Dim INNER JOIN (Employee_Dim INNER JOIN Sales_Fact ON Employee_Dim.EmployeeKey = Sales_Fact.EmployeeKey) ON Time_Dim.TimeKey = Sales_Fact.TimeKey WHERE (((Time_Dim.Year) = 1997)) GROUP BY Employee_Dim.EmployeeName;
Просмот таблицы Product
SELECT * FROM PRODUCT_DIM
Таблицу можно пополнять запросами или на странице «ПАРАМ» ввести дополнительный параметр «Имя рабочей таблице с запросами» и менять значение этого параметра.
2.3. Создание процедуры для связи с базой данной.
Процедуру для связи с базой данных создадим в отдельном модуле (Insert®Module) и назовем ее Main(). Эта процедура будет создавать объект ADO.Connection и формировать его основные параметры. Текст процедуры Main() и блок общих (Public) параметров приведен в скрипте ниже:
Public obj As New ADODB.Connection
'-------- Процедура для коннекта с базой данных --------
Sub main()
Dim intCtr As Integer
'-1 ------- подготовка имени БД ------------------------
PathDb = Sheets("ПАРАМ").Cells(2, 3).Value
NameDb = Sheets("ПАРАМ").Cells(3, 3).Value
NameProv = Sheets("ПАРАМ").Cells(4, 3).Value
FullNameDb = PathDb & NameDb
'2 ---------- открытие объекта базы данных -------------