|
||||||||||||||||
Microsoft Access. Создание базы данных
Время создания: 16.03.2019 23:43
Раздел: Разные закладки - VBA - Access - leadersoft.ru
Запись: xintrea/mytetra_db_adgaver_new/master/base/1531371529urnnjjw89x/text.html на raw.githubusercontent.com
|
||||||||||||||||
|
||||||||||||||||
Microsoft Access. Создание базы данных
В этой части статьи речь пойдет о создании базы данных средствами VBA. Сейчас восстанавливаем простые знания. далее будем их расширять, описывать формы, отчеты по разным базам данных.
И так после подготовительных действий, Вы можете приступить к созданию базы данных в файловой системе. Саму базу данных «Новый калькулятор.mdb» (переменная strMDB) создим программным методом, используя встроенный язык программирования Visual Basic For Application.
Public Function funCreateDatabase(strMDB As String) As 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) будет закрыта, все ее объекты сохранены, а потом произойдет сжатие данных.
Public Function funCloseDatabase(strMDB As String) As 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.
Public Function funCompactDatabase(strMDB As String) As 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
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, введите их в свои программы, и тогда программное обеспечение, разрабатываемое Вами, будет иметь больший успех и уважение у пользователей.
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), то в следующих сеансах работы оно не будет отображаться на экране.
'Название
' Изменить/создать свойство базы данных
'Параметры:
' strName - имя свойства (Description, Format ...)
' varType - тип свойства (dbText, dbLong ...)
' varValue - значение свойства
'
Function dbChangeProperty(strName As String, varType As Object, varValue As Object) As 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 для изучения разных видов интерфейса.
|
||||||||||||||||
Так же в этом разделе:
|
||||||||||||||||
|
||||||||||||||||
|