Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сжатие нескольких баз одним махом / 7 сообщений из 7, страница 1 из 1
19.07.2002, 11:40
    #32037686
Anatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сжатие нескольких баз одним махом
Ежедневно приходится сжимать несколько (около 20) Access97 баз. Написал что-то вроде такой проги:

Public Sub CompactDataBase()
Dim rst As Recordset
Dim s1 As String 'путь и имя исходной базы
Dim s2 As String 'копия сжимаемой базы
Dim sQ As String

'есть таблица ListDb с полными (путь + имя) именами баз данный, подлежащих сжатию
sQ = "SELECT NmDb FROM ListDb"
Set rst = CurrentDb.OpenRecordset(sQ)
With rst
.MoveFirst
Do Until .EOF 'пройдемся по всем базам и сожмем каждую из них
s1 = .Fields("NmDb")
s2 = Mid(s1, 1, Len(s1) - 4) & "_1" & ".mdb" 'копия сжимаемой базы (добавляется суффикс "_1" к исходному имени)

DBEngine.CompactDataBase s1, s2
'Пока эта строка сжимает незапароленные базы - все ОК!, Но как только база запаролена, надо ручками вводить его родимого pwd. Как бы это автоматизировать? Тогда возможно было бы сжимать базы ночью с помощью планировщика заданий, а не тащиться на работу раньше всех

Kill s1 'удаляю старую базу
Name s2 As s1 'переименовываю сжатую в новую

.MoveNext
Loop

End With
Set rst = Nothing
End Sub
...
Рейтинг: 0 / 0
19.07.2002, 11:53
    #32037698
sFx
sFx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сжатие нескольких баз одним махом
так в чем проблема хелп прочитать?
вот выжимка
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Синтаксис

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

Синтаксис метода CompactDatabase содержит следующие элементы.

Элемент	Описание
стараяБД	Выражение или переменная типа String, определяющая существующую закрытую базу данных.  Следует указать полный путь и имя файла, например  "C:\db1.mdb" .  это поддерживается сетевой операционной системой, можно также указать сетевой путь к файлу, например,  "\\server1\share1\dir1\db1.mdb" .
новаяБД	Выражение или переменная типа String, содержащая полный путь к создаваемой сжатой базе данных.  Для этого аргумента также допускается указание сетевого пути к файлу.  В аргументе новаяБД нельзя задавать ту же базу данных, которая указана в аргументе стараяБД.
порядок	Необязательный.  Выражение или переменная типа Variant, содержащая строковое выражение, применяемое для определения порядка символов (национальной языковой), который будет использоваться в операциях сравнения и сортировки в базе данных, определяемой аргументом новаяБД, как указано ниже в разделе  "Значения" .  Если данный аргумент опущен, национальная настройка новой базы данных будет определяться порядком символов, заданным в старой базе данных.
Допускается также создание пароля для базы данных новаяБД путем слияния строки пароля (начинающейся с символов  ";pwd=" ) с константой в аргументе порядок, например:
dbLangCyrillic &  ";pwd=МойПароль" 
Если требуется задать то же значение аргумента порядок, что и в базе данных стараяБД (значение по умолчанию), но указать новый пароль, достаточно ввести строку пароля как значение аргумента порядок:
 ";pwd=НовыйПароль" 
параметры	Необязательный.  Константа или комбинация констант, которая определяет один или несколько параметров, как указано ниже в разделе  "Значения" .  Пользователь имеет возможность комбинировать параметры путем суммирования констант.
пароль	Необязательный.  Выражение или переменная типа Variant, содержащая выражение, задающее пароль для базы данных с парольной защитой.  Паролю должна предшествовать строка  ";pwd=" .  Если пароль задан в аргументе порядок, данный аргумент игнорируется.
...
Рейтинг: 0 / 0
19.07.2002, 11:54
    #32037699
Anatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сжатие нескольких баз одним махом
Кстати, обязательно ли надо восстанавливать базу после ее сжатия? Раньше я писал батничек такого типа:

"C:\Program Files\Microsoft Office\Office\Msaccess.exe" "D:\MyDb_1.mdb" /Excl /Compact
"C:\Program Files\Microsoft Office\Office\Msaccess.exe" "D:\MyDb_1.mdb" /Excl /Repair
................................... и так далее N раз по списку

"C:\Program Files\Microsoft Office\Office\Msaccess.exe" "D:\MyDb_N.mdb" /Excl /Compact
"C:\Program Files\Microsoft Office\Office\Msaccess.exe" "D:\MyDb_N.mdb" /Excl /Repair

но тогда приходилось сидеть и каждый раз нажимать кнопку "ОК", когда Access выдавало сообщение "Приложежние 'MicrosoftAccess' успешно восстановило базу данных MyDb_1.mdb". И так N раз. Да и от ввода паролей это не освобождает никак.
...
Рейтинг: 0 / 0
19.07.2002, 11:58
    #32037706
sFx
sFx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сжатие нескольких баз одним махом
кстати, проверка что база сжалась есть или нет? а то новая база рухнет во время сжатия, а старую Вы удалите... и пиндык, как говорится :))) или у Вас есть бэкап ночной? :))
...
Рейтинг: 0 / 0
19.07.2002, 12:06
    #32037715
sFx
sFx
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сжатие нескольких баз одним махом
а почему батник, а не VB код? если можно сделать программно компакт, то вы думаете нельзя программно восстановит? :)))) все тоже самое и тамже (Великий хелп)
а вообщения можно по Setwarnings = false/True сделать.
...
Рейтинг: 0 / 0
19.07.2002, 12:07
    #32037717
Anatoliy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сжатие нескольких баз одним махом
Да действительно сработало, я не там ставил пароль. Надо было так:
DBEngine.CompactDataBase "D:\db1.mdb", "D:\db1_1.mdb", , ,";pwd=123"
Спасибо
...
Рейтинг: 0 / 0
14.01.2003, 09:44
    #32090033
Максим$
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Сжатие нескольких баз одним махом
А в ADO нет что нибуть типа DBEngine.CompactDataBase?
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Сжатие нескольких баз одним махом / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]