
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
19.07.2002, 11:40
|
|||
|---|---|---|---|
|
|||
Сжатие нескольких баз одним махом |
|||
|
#18+
Ежедневно приходится сжимать несколько (около 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.07.2002, 11:53
|
|||
|---|---|---|---|
Сжатие нескольких баз одним махом |
|||
|
#18+
так в чем проблема хелп прочитать? вот выжимка Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.07.2002, 11:54
|
|||
|---|---|---|---|
|
|||
Сжатие нескольких баз одним махом |
|||
|
#18+
Кстати, обязательно ли надо восстанавливать базу после ее сжатия? Раньше я писал батничек такого типа: "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 раз. Да и от ввода паролей это не освобождает никак. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.07.2002, 11:58
|
|||
|---|---|---|---|
Сжатие нескольких баз одним махом |
|||
|
#18+
кстати, проверка что база сжалась есть или нет? а то новая база рухнет во время сжатия, а старую Вы удалите... и пиндык, как говорится :))) или у Вас есть бэкап ночной? :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.07.2002, 12:06
|
|||
|---|---|---|---|
Сжатие нескольких баз одним махом |
|||
|
#18+
а почему батник, а не VB код? если можно сделать программно компакт, то вы думаете нельзя программно восстановит? :)))) все тоже самое и тамже (Великий хелп) а вообщения можно по Setwarnings = false/True сделать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.07.2002, 12:07
|
|||
|---|---|---|---|
|
|||
Сжатие нескольких баз одним махом |
|||
|
#18+
Да действительно сработало, я не там ставил пароль. Надо было так: DBEngine.CompactDataBase "D:\db1.mdb", "D:\db1_1.mdb", , ,";pwd=123" Спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=45&mobile=1&tid=1682561]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
22ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 221ms |
| total: | 303ms |

| 0 / 0 |
