A. Создание базы данных
И так после подготовительных действий, Вы можете приступить к созданию базы данных в файловой системе. Саму базу данных «Новый калькулятор.mdb» (переменная strMDB) создим программным методом, используя встроенный язык программирования Visual Basic Access, аналогично способу, указанному слева с помощью мастера Access.
B. Закрытие базы данных
Если мы открыли базу данных, то ее необходимо закрыть. Это хороший способ программирования, хотя при закрытии окна Access (appAccess.Quit) база данных закрывается автоматически.
В этом примере база данных «Новый калькулятор.mdb» (переменная strMDB) будет закрыта, все ее объекты сохранены, а потом произойдет сжатие данных.
D. Настройка ссылок
При создании базы данных нам потребуются внешние функции, которые хранятся в специальных библиотеках, файлах с расширением DLL.
В этом примере показано, как создать программу, которая будет автоматически подключать нужные Вам библиотеки, а в качестве шаблона ссылок использует текущую базу данных.
Например, ссылка на библиотеку Office хранится в файле C:\Program Files\Microsoft Office\ Office\MSO9.DLL
Е. Настройка запуска
Когда Вы открываете базу данных созданную начинающим специалистом с помощью мастеров Access, то Вам сразу «бросается в глаза» некачественный интерфейс (лишние кнопки, меню, окна, разбросанные по экрану), который и дает Вам общую оценку его работе.
В этом примере давайте настроим базу данных так, чтобы в ней был начальный «приятный» интерфейс, а именно дадим базе данных заголовок, иконку, погасим ненужные окна и меню.
Совет. Изучите внимательно настройки базы данных в справочной системе Microsoft Access, введите их в свои программы, и тогда программное обеспечение, разрабатываемое Вами, будет иметь больший успех и уважение у пользователей.
F. Свойство базы данных
В предыдущем разделе мы меняли заголовок базы данных, а здесь показан пример, как изменить свойство базы данных, используя встроенные функции Access.
Дополнение. Созданные свойства в отличие от переменных хранятся в базе данных постоянно, и Вам достаточно назначить их один раз, чтобы потом они уже использовались автоматически при открытии базы данных.
Например, если Вы погасили в каком-то сеансе с базой данных ее основное окно (StartupShowDBWindow = False), то в следующих сеансах работы оно не будет отображаться на экране.
'Название
' Изменить/создать свойство базы данных
'Параметры:
' strName - имя свойства (Description, Format ...)
' varType - тип свойства (dbText, dbLong ...)
' varValue - значение свойства
'
G. Проверка знаний
Теперь Вы научились создавать базу данных не с помощью мастера Access, а профессионально с помощью языка программирования Microsoft Visual Basic Access.
Ваш результат Вы можете увидеть, нажав кнопку [Проверка N2] внизу экрана. Перед Вами отобразиться база данных, в которой пока не будет ни одного элемента.
На следующем этапе программирования мы будем создавать таблицу «Калькулятор» с полями и необходимыми свойствами.
Итак, если Вы не желаете, посмотреть на пустую базу данных, нажмите кнопку Вперед>
08.06.2000 Виктор Конюков, mailto:LiderAccess@bigfoot.com
С. Сжатие базы данных
При работе с базой данных Microsoft Access у Вас постепенно будет расти размер базы данных. Это связано с тем, что, удаляя элементы или записи «физически» из базы они не удаляются, уничтожаются только ссылки. Для уменьшения размера базы данных, напишем программу для сжатия ее файла.
В качестве имени файла, передаваемого в программу, введем переменную StrMDB.
Function dbChangeProperty(strName As String, varType As Variant, varValue As Variant) As Boolean
Dim prp As Variant, dbs As Database
On Error GoTo 999 'Назначаем переход по ошибке
dbChangeProperty = False 'Возвращаем результат при ошибке
Set dbs = appAccess.CurrentDb 'Выбираем базу
dbs.Properties(strName) = varValue 'Присваиваем значение
dbChangeProperty = True 'Возвращаем результат
Exit Function 'Выходим из программы
999:
If Err = 3270 Then 'Свойство не найдено
Set prp = dbs.CreateProperty(strName, varType, varValue) 'Создаем свойство
dbs.Properties.Append prp 'Добавляем свойство
Err.Clear 'Очищаем поток от ошибки
Resume Next 'Возвращаемся к следующему оператору
End If
Err.Clear 'Очищаем поток от незнакомой ошибки
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 'Очищаем поток от ошибок
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 'Устанавливаем полное имя файла
Set fs = CreateObject("Scripting.FileSystemObject") 'Создаем файловую систему
tmpMDB = fs.GetTempName 'Получаем временный файл
DBEngine.CompactDatabase sFullPath, tmpMDB, dbLangCyrillic 'Сжимаем базу данных
fs.CopyFile tmpMDB, sFullPath, True 'Переписываем файл
Kill tmpMDB 'Удаляем временный файл
Set fs = Nothing 'Уничтожаем объект файловой системы
funCompactDatabase = True 'Возвращаем результат
Exit Function 'Выходим из программы
999:
MsgBox Err.Description 'Сообщаем об ошибке
Err.Clear 'Очищаем поток от ошибок
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 'Очищаем поток от ошибок
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 'Очищаем поток от ошибок