MyTetra Share
Делитесь знаниями!
Шаг 13 - Метод CompactDatabase
Время создания: 12.10.2019 20:39
Текстовые метки: vba_access, compact, compress, сжатие
Раздел: Разные закладки - VBA - Access - Compress
Запись: xintrea/mytetra_db_adgaver_new/master/base/1570800944lazfzqdcfz/text.html на raw.githubusercontent.com


Описание
Копирует и сжимает закрытую базу данных, предоставляя дополнительную возможность изменить версию, порядок символов при сортировке и состояние шифрования (только в рабочей области ядра Microsoft Jet).

DBEngine.CompactDatabase стараяБД, новаяБД, порядок, параметры, пароль

Параметры
стараяБД
Выражение или переменная типа String, определяющая существующую закрытую базу данных. Следует указать полный путь и имя файла, например "C:\db1.mdb". это поддерживается сетевой операционной системой, можно также указать сетевой путь к файлу, например, "\\server1\share1\dir1\db1.mdb".
новаяБД
Выражение или переменная типа String, содержащая полный путь к создаваемой сжатой базе данных. Для этого аргумента также допускается указание сетевого пути к файлу. В аргументе новаяБД нельзя задавать ту же базу данных, которая указана в аргументе стараяБД.
порядок
Необязательный. Выражение или переменная типа Variant, содержащая строковое выражение, применяемое для определения порядка символов (национальной языковой), который будет использоваться в операциях сравнения и сортировки в базе данных, определяемой аргументом новаяБД, как указано ниже в разделе "Значения". Если данный аргумент опущен, национальная настройка новой базы данных будет определяться порядком символов, заданным в старой базе данных.
Допускается также создание пароля для базы данных новаяБД путем слияния строки пароля (начинающейся с символов ";pwd=") с константой в аргументе порядок, например:

dbLangCyrillic & ";pwd=МойПароль"

Если требуется задать то же значение аргумента порядок, что и в базе данных стараяБД (значение по умолчанию), но указать новый пароль, достаточно ввести строку пароля как значение аргумента порядок:

";pwd=НовыйПароль"

В аргументе порядок используются следующие константы, определяющих значение свойства CollatingOrder, т.е. язык, в соответствии с правилами которого определяется порядок символов, используемый при сравнении текстовых строк:

  • dbLangGeneral - Английский, немецкий, французский, португальский, итальянский и современный испанский.
  • dbLangArabic - Арабский.
  • dbLangChineseSimplified - Упрощенный китайский.
  • dbLangChineseTraditional - Традиционный китайский.
  • dbLangCyrillic - Русский.
  • dbLangCzech - Чешский.
  • dbLangDutch - Голландский.
  • dbLangGreek - Греческий.
  • dbLangHebrew - Иврит.
  • dbLangHungarian - Венгерский.
  • dbLangIcelandic - Исландский.
  • dbLangJapanese - Японский.
  • dbLangKorean - Корейский.
  • dbLangNordic - Скандинавские языки (только для версии ядра Microsoft Jet 1.0).
  • dbLangNorwDan - Норвежский и датский.
  • dbLangPolish - Польский.
  • dbLangSlovenian - Словенский.
  • dbLangSpanish - Традиционный испанский.
  • dbLangSwedFin - Шведский и финский.
  • dbLangThai - Тайский.
  • dbLangTurkish - Турецкий.

параметры
Необязательный. Константа или комбинация констант, которая определяет один или несколько параметров, как указано ниже в разделе "Значения". Пользователь имеет возможность комбинировать параметры путем суммирования констант.
Следующие константы определяют в аргументе параметры режим шифрования или дешифрования базы данных во время сжатия:

  • dbEncrypt - Шифрование базы данных при сжатии.
  • dbDecrypt - Дешифрование базы данных при сжатии.

Следующие константы, применяемые для задания значения аргумента параметры, позволяют установить формат конкретной версии для сжатой базы данных. Эти константы определяют только версию базы данных новаяБД и не влияют на формат любых объектов Microsoft Access, таких как формы или отчеты.

  • dbVersion10 - Создание сжатой базы данных, в которой используется формат файла ядра базы данных Microsoft Jet версии 1.0.
  • dbVersion11 - Создание сжатой базы данных, в которой используется формат файла ядра базы данных Microsoft Jet версии 1.1.
  • dbVersion20 - Создание сжатой базы данных, в которой используется формат файла ядро базы данных Microsoft Jet версии 2.0.
  • dbVersion30 - Создание сжатой базы данных, в которой используется формат файла ядра базы данных Microsoft Jet версии 3.0 (совместимый с версией 3.5).

пароль
Необязательный. Выражение или переменная типа Variant, содержащая выражение, задающее пароль для базы данных с парольной защитой. Паролю должна предшествовать строка ";pwd=". Если пароль задан в аргументе порядок, данный аргумент игнорируется.

Замечания
По мере изменения его содержимого файл базы данных может стать фрагментированным и занимать больше места на диске, чем необходимо. Для дефрагментации файла базы данных следует периодически проводить его сжатие с помощью метода CompactDatabase. Сжатие базы данных обычно приводит к экономии места на диске и часто повышает производительность. Кроме этого, при этом имеется возможность изменить порядок символов, используемый для операций сортировки, зашифровать или дешифровать базу данных или указать для базы данных формат другой версии.
Перед сжатием старой базы данных ее необходимо закрыть. В многопользовательской среде ни один из пользователей не сможет открыть базу данных стараяБД во время выполнения сжатия. Если стараяБД не закрыта или недоступна для монопольного доступа, возникает ошибка.
Поскольку в методе CompactDatabase создается копия базы данных, необходимо иметь достаточно места на диске как для исходной базы данных, так и для ее копии. При нехватке свободного пространства операция сжатия выполнена не будет. Новая база данных не обязательно должна находиться на том же диске, что и старая база данных. После успешного выполнения операции сжатия исходную базу данных можно стереть и присвоить сжатой базе данных старое имя.
Метод CompactDatabase копирует все данные и разрешения системы защиты базы данных стараяБД в базу данных новаяБД.
После преобразования с помощью метода CompactDatabase базы данных версии 1.x в формат версии 2.5 или 3.x, база данных может быть открыта только приложениями, использующими ядро Microsoft Jet версии 2.5 или 3.x.
В рабочей области ODBCDirect вызов метода CompactDatabase не приводит к возвращению ошибки, так как ядро Microsoft Jet при этом загружается в память.
Поскольку метод CompactDatabase не приводит к преобразованию объектов Microsoft Access, не рекомендуется его использовать для преобразования баз данных, содержащих такие объекты. Пользуйтесь для этого командой Преобразовать из подменю Служебные программы в меню Сервис Microsoft Access.

Пример
Следующая программа использует метод CompactDatabase для изменения порядка символов, используемого при сравнении текстовых строк или при сортировке в базе данных. Не допускается использование данной программы в модуле, принадлежащем базе данных Борей.mdb.

Sub CompactDatabaseX()

	Dim dbsNorthwind As Database

	Set dbsNorthwind = OpenDatabase("Борей.mdb")

	' Отображает свойства исходной базы данных.
	With dbsNorthwind
		Debug.Print .Name & ", версия " & .Version
		Debug.Print "    Порядок символов = " & .CollatingOrder
		.Close
	End With

	' Проверяет наличие файла, имеющего имя, которое 
	' будет присвоено сжатой базе данных.
	If Dir("БорейКорея.mdb") <> "" Then Kill "БорейКорея.mdb"
	' Создает сжатую копию базы данных "Борей",
	' в которой используется порядок символов
	' корейского языка.

	DBEngine.CompactDatabase "Борей.mdb", 	"БорейКорея.mdb", dbLangKorean

	Set dbsNorthwind = OpenDatabase("БорейКорея.mdb")

	' Отображает свойства сжатой базы данных.
	With dbsNorthwind
		Debug.Print .Name & ", версия " & .Version
		Debug.Print "    Порядок символов = " & .CollatingOrder
		.Close
	End With

End Sub

Следующая программа использует метод CompactDatabase для изменения версии базы данных. Для запуска этой программы необходимо иметь базу данных версии Microsoft Jet 1.1 с именем Nwind11.mdb. Не допускается использование данной программы в модуле, принадлежащем базе данных Nwind11.mdb.

Sub CompactDatabaseX2()

	Dim dbsNorthwind As Database
	Dim prpLoop As Property

	Set dbsNorthwind = OpenDatabase("Nwind11.mdb")

	' Отображает свойства исходной базы данных.
	With dbsNorthwind
		Debug.Print .Name & ", версия " & .Version
		Debug.Print "    Порядок символов = " & .CollatingOrder
		.Close
	End With

	' Проверяет наличие файла, имеющего имя, которое 
	' будет присвоено сжатой базе данных.
	If Dir("Nwind20.mdb") <> "" Then Kill "Nwind20.mdb"

	' Создает сжатую и зашифрованную базу данных версии
	' Microsoft Jet 2.0 из базы данных Microsoft Jet
	' версии 1.1.
	DBEngine.CompactDatabase "Nwind11.mdb", "Nwind20.mdb", , dbEncrypt + dbVersion20

	Set dbsNorthwind = OpenDatabase("Nwind20.mdb")

	' Отображает свойства сжатой базы данных.
	With dbsNorthwind
		Debug.Print .Name & ", версия " & .Version
		For Each prpLoop In .Properties
			On Error Resume Next
			If prpLoop <> "" Then Debug.Print "    " & prpLoop.Name & " = " & prpLoop
			On Error GoTo 0
		Next prpLoop
		.Close
	End With
End Sub



Предыдущий Шаг | Следующий Шаг | Оглавление

 
MyTetra Share v.0.65
Яндекс индекс цитирования