Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Microsoft Access. Создание базы данных



Microsoft Access. Создание базы данных
2015-12-24 17:27 noreply@blogger.com (Виктор Leadersoft)
В этой части статьи речь пойдет о создании базы данных средствами VBA. Сейчас восстанавливаем простые знания. далее будем их расширять, описывать формы, отчеты по разным базам данных.
И так после подготовительных действий, Вы можете приступить к созданию базы данных в файловой системе. Саму базу данных «Новый калькулятор.mdb» (переменная strMDB) создим программным методом, используя встроенный язык программирования Visual Basic For Application.

На этой форме показано как создать базу данных через интерфейс Microsoft Access 2016. Вид мастера для Access 2000 смотрите в примерах по калькулятору. Вообще у разных версий Access меняется только внешний вид форм. Найти нужную кнопку бывает очень сложно.


Public Function funCreateDatabase(strMDB As StringAs Boolean
    Dim sFullPath As String
    On Error GoTo 999  'Назначаем переход по ошибке
    funCreateDatabase = False 'Возвращаем результат при ошибке
    sFullPath = appFolder & "\" & strMDB 'Полное имя файла
    If Dir(sFullPath) <> "" Then Kill sFullPath 'Уничтожаем старую базу данных
    DBEngine.CreateDatabase(sFullPath, dbLangCyrillic) 'Создаем базу данных
    appAccess.OpenCurrentDatabase sFullPath 'Открываем базу данных
    funInitReferences() '<2> Настраиваем ссылки базы данных
    funInitStartupProperties() '<2> Настраиваем стартовые свойства
    funCreateDatabase = True 'Возвращаем результат
    Exit Function 'Выходим из программы
999:
    MsgBox Err.Description 'Сообщаем об ошибке
    Err.Clear() 'Очищаем поток от ошибок
End Function

Закрытие базы данных

Если мы открыли базу данных, то ее необходимо закрыть. Это хороший способ программирования, хотя при закрытии окна Access (appAccess.Quit) база данных закрывается автоматически. 
В этом примере база данных «Новый калькулятор.mdb» (переменная strMDB) будет закрыта, все ее объекты сохранены, а потом произойдет сжатие данных.

На этом снимке экрана показано, как закрыть базу данных через меню. Выбран пункт меню Сохранить как, если нажать меню Закрыть (Quit) база данных закроется.

Public Function funCloseDatabase(strMDB As StringAs Boolean
    On Error GoTo 999  'Назначаем переход по ошибке
    funCloseDatabase = False 'Возвращаем результат при ошибке
    appAccess.CloseCurrentDatabase() 'Закрываем базу данных
    appAccess.Quit acQuitSaveAll 'Выходим c сохранением
    funCompactDatabase strMDB '<2> Сжимаем базу данных
    funCloseDatabase = True 'Возвращаем результат
    Exit Function 'Выходим из программы
999:
    MsgBox Err.Description 'Сообщаем об ошибке
    Err.Clear() 'Очищаем поток от ошибок
End Function

Сжатие базы данных

При работе с базой данных Microsoft Access у Вас постепенно будет расти размер базы данных.
Это связано с тем, что, удаляя элементы или записи «физически» из базы они не удаляются, уничтожаются только ссылки. 
Для уменьшения размера базы данных, напишем программу для сжатия ее файла. В качестве имени файла, передаваемого в программу, введем переменную StrMDB.

На этом снимке экрана показано, как сжать базу данных через меню Access 2016

 Public Function funCompactDatabase(strMDB As StringAs Boolean
    Dim tmpMDB As String, fs, sFullPath As String
    On Error GoTo 999  'Назначаем переход по ошибке
    funCompactDatabase = False 'Возвращаем результат при ошибке
    sFullPath = appFolder & "\" & strMDB 'Устанавливаем полное имя файла
    fs = CreateObject("Scripting.FileSystemObject"'Создаем файловую систему
    tmpMDB = fs.GetTempName 'Получаем временный файл
    DBEngine.CompactDatabase(sFullPath, tmpMDB, dbLangCyrillic) 'Сжимаем базу данных
    fs.CopyFile(tmpMDB, sFullPath, True'Переписываем файл
    Kill tmpMDB 'Удаляем временный файл
    fs = Nothing 'Уничтожаем объект файловой системы
    funCompactDatabase = True 'Возвращаем результат
    Exit Function 'Выходим из программы
999:
    MsgBox Err.Description 'Сообщаем об ошибке
    Err.Clear() 'Очищаем поток от ошибок
End Function

Настройка ссылок 

При создании базы данных нам потребуются внешние функции, которые хранятся в специальных библиотеках, файлах с расширением DLL. 
В этом примере показано, как создать программу, которая будет автоматически подключать нужные Вам библиотеки, а в качестве шаблона ссылок использует текущую базу данных. Например, ссылка на библиотеку Office хранится в файлеC:\Program Files\Microsoft Office\ Office\MSO9.DLL

На этом снимке экрана показано, как удалить или установить ссылку на библиотеку в интерфейсе редактора VBA для Access 2016 и для Access 2000.

Public Function funInitReferences()
    Dim sFullPath As String, ref As Reference
    On Error GoTo 999  'Назначаем переход по ошибке
    With appAccess 'Выбираем базу данных
        For Each ref In .References
            If ref.BuiltIn = False Then _
                .References.Remove ref 'Удаляем лишние ссылки
        Next
    End With
    sFullPath = References("Office").FullPath
    appAccess.References.AddFromFile(sFullPath) 'Устанавливаем Office
    sFullPath = References("DAO").FullPath
    appAccess.References.AddFromFile(sFullPath) 'Устанавливаем DAO
    Exit Function 'Выходим из программы
999:
    MsgBox Err.Description 'Сообщаем об ошибке
    Err.Clear() 'Очищаем поток от ошибок
End Function

Настройка запуска

Когда Вы открываете базу данных созданную начинающим специалистом с помощью мастеров Access, то Вам сразу «бросается в глаза» некачественный интерфейс (лишние кнопки, меню, окна, разбросанные по экрану), который и дает Вам общую оценку его работе. 
В этом примере давайте настроим базу данных так, чтобы в ней был начальный «приятный» интерфейс, а именно дадим базе данных заголовок, иконку, погасим ненужные окна и меню.
Совет. Изучите внимательно настройки базы данных в справочной системе Microsoft Access, введите их в свои программы, и тогда программное обеспечение, разрабатываемое Вами, будет иметь больший успех и уважение у пользователей.

 

На этом снимке экрана показан вид формы калькулятора в интерфейсе Microsoft Access 2016 без дополнительных настроек, т.е. нет верхнего меню.

Public Function funInitStartupProperties()
    '<2> Изменяем заголовок
    dbChangeProperty("AppTitle", DB_Text, "Калькулятор, Версия 1.0")
    '<2> Изменяем иконку
    dbChangeProperty("AppIcon", DB_Text, appFolder & "\Рисунки\Лидер.ico")
    dbChangeProperty("StartupShowDBWindow", 1, False'<2> Гасим окно БД
    dbChangeProperty("StartupShowStatusBar", 1, False'<2> Гасим сообщения
    dbChangeProperty("AllowBuiltinToolbars", 1, True'<2> Разрешаем меню
    dbChangeProperty("AllowFullMenus", 1, True'<2> Разрешаем все меню
    dbChangeProperty("AllowToolbarChanges", 1, True'<2> Разрешаем изменения
End Function

Свойство базы данных

В предыдущем разделе мы меняли заголовок базы данных, а здесь показан пример, как изменить свойство базы данных, используя встроенные функции Access.
 Дополнение. Созданные свойства в отличие от переменных хранятся в базе данных постоянно, и Вам достаточно назначить их один раз, чтобы потом они уже использовались автоматически при открытии базы данных. 
Например, если Вы погасили в каком-то сеансе с базой данных ее основное окно (StartupShowDBWindow = False), то в следующих сеансах работы оно не будет отображаться на экране.
  

На этом снимке экрана показана форма Параметры Access с помощью которой можно изменить настройки свойств редактируемой базы данных в Access 2016

'Название
'   Изменить/создать свойство базы данных
'Параметры:
'   strName - имя свойства (Description, Format ...)
'   varType - тип свойства (dbText, dbLong ...)
'   varValue - значение свойства
'
Function dbChangeProperty(strName As String, varType As Object, varValue As ObjectAs Boolean
    Dim prp As Object, dbs As Database
    On Error GoTo 999 'Назначаем переход по ошибке
    dbChangeProperty = False 'Возвращаем результат при ошибке
    dbs = appAccess.CurrentDb 'Выбираем базу
    dbs.Properties(strName) = varValue 'Присваиваем значение
    dbChangeProperty = True 'Возвращаем результат
    Exit Function 'Выходим из программы
999:
    If Err = 3270 Then  'Свойство не найдено
        prp = dbs.CreateProperty(strName, varType, varValue) 'Создаем свойство
        dbs.Properties.Append prp 'Добавляем свойство
        Err.Clear() 'Очищаем поток от ошибки
        Resume Next 'Возвращаемся к следующему оператору
    End If
    Err.Clear() 'Очищаем поток от незнакомой ошибки
End Function

Проверка знаний

Теперь Вы научились создавать базу данных не с помощью мастера Access, а профессионально с помощью языка программирования Microsoft Visual Basic For Application. 
Ваш результат Вы можете увидеть, нажав кнопку [Проверка N2] внизу экрана. Перед Вами отобразиться база данных, в которой пока не будет ни одного элемента.На следующем этапе программирования мы будем создавать таблицу «Калькулятор» с полями и необходимыми свойствами. 
Примечание. Все примеры, указанные в книге, были протестированы на версии Access 2000 и 2016. Называется эта программа Лекции по Microsoft Access. В лекциях используются снимки экрана для Access 2000 для изучения разных видов интерфейса.

ОГЛАВЛЕНИЕ

ССЫЛКИ ПО ТЕМЕ

Загрузить исходники по теме (скоро …)



В избранное