Форум программистов, компьютерный форум, киберфорум
Microsoft Access
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для HOUSE MD
453 / 215 / 5
Регистрация: 16.05.2010
Сообщений: 420

Проограмно сжать запароленную базу

27.09.2011, 14:04. Показов 1317. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Как с помощью DAO сжать запароленную разделенную базу (серверная часть). База без пароля сжимается легко:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Public Function fCompactDatabase(CompactingDBPathAndName As String) As Long
Dim strTempFile As String
On Error GoTo ErrHandler
' включаєм годинник
    DoCmd.Hourglass (True)
' отримання шляху і назви підключеної бази
    strCompactingDBPathAndName = DLookup("[Database]", "LinkPath")
' назва тимчасового файлу
    strTempFile = Left(strCompactingDBPathAndName, (Len(strCompactingDBPathAndName) - 4)) & "_" & Format(Date, "yymmdd") & "_" & Format(Time, "hhmm") & "_Temp" & Right(strCompactingDBPathAndName, 4)
' створення стиснутої копії
    SysCmd acSysCmdSetStatus, "Проходить стиснення бази даних. Не вимикайте комп'ютер !"
    DBEngine.CompactDatabase strCompactingDBPathAndName, strTempFile ', dbLangCyrillic
' заміна бази на стиснуту
    SysCmd acSysCmdSetStatus, "Проходить оновлення бази даних. Не вимикайте комп'ютер !"
    FileCopy strTempFile, strCompactingDBPathAndName
' видалення копії
    Kill strTempFile
    SysCmd acSysCmdSetStatus, "Стиснення бази пройшло успішно !"
    funRelin (strCompactingDBPathAndName)    
Exit Function
ErrHandler:
  fCompactDatabase = Err.Number
  Err.Clear: Exit Function
End Function
Сжатие через JRO мне известно:
Visual Basic
1
2
3
Dim je As New JRO.JetEngine 
je.CompactDatabase "Data Source=" & strBE & ";Jet OLEDB:database password=YourPassword", _ 
"Data Source=" & strBETemp &  ";Jet OLEDB:database password=YourPassword;"
но нужная библиотека может быть не всегда подключена
Спасибо.

Добавлено через 14 часов 33 минуты
Доброго времени суток.
Вопрос решен следующим образом(модуль basCompactDatabase):
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
Option Compare Database
Option Explicit
 
Public strDBPath As String 'путь и название сжимаемой базы
Public Const conStrPwd As String = "йцкt6e3е7оpo" '  пароль базы 
 
 
Public Function fCompactDatabase() As Long
' функция сжатия базы
Dim strTempFile As String 'название временного файла
 
On Error GoTo ErrHandler
' включаем часы
    DoCmd.Hourglass (True)
' получение пути к подключеной базе
    strDBPath = DLookup("[Database]", "LinkPath")
' формирование названия временного файла
    strTempFile = Left(strDBPath, (Len(strDBPath) - 4)) & "_" & Format(Date, "yymmdd") & "_" & Format(Time, "hhmm") & "_Temp" & Right(strDBPath, 4)
' уведоммление в прогресбаре о сжатии
    SysCmd acSysCmdSetStatus, "Проходить стиснення бази даних. Не вимикайте комп'ютер !"
' "сбрасывание" пароля
    Call fNewPwd(conStrPwd, "")
' создание сжатой копии  
    DBEngine.CompactDatabase strDBPath, strTempFile ', dbLangCyrillic
' замена базы на сжатую копию
    FileCopy strTempFile, strDBPath
' удаление копии
    Kill strTempFile
' установка пароля 
    Call fNewPwd("", conStrPwd)
' уведомление в прогресбаре об успешном завершении    
    SysCmd acSysCmdSetStatus, "Стиснення бази пройшло успішно !"
' переподключение таблиц    
    funRelin (strDBPath)
    
Exit Function
 
ErrHandler:
 
  fCompactDatabase = Err.Number
 
  Err.Clear: Exit Function
 
End Function
 
Public Function fNewPwd(strOldPwd As String, strNewPwd As String)
' функция смены пароля
Dim WS As Workspace
Dim DB As Database
 
'Открываем рабочую область
Set WS = DBEngine.Workspaces(0)
'Открываем БД, где strDBPath – путь к базе данных, strOldPwd – старый пароль
OpenDatabasePwd:
Set DB = WS.OpenDatabase(strDBPath, True, False, "MS Access;pwd=" & strOldPwd)
' если база изначально была без пароля - возникает ошибка, переходим к обработчику
On Error GoTo ErrPwd: 
' устанавливаем новый пароль
DB.NewPassword strOldPwd, strNewPwd
Exit Function
 
ErrPwd:
strOldPwd = ""
GoTo OpenDatabasePwd
End Function
и запрос LinkPath для получения пути к подключенной базе:
SQL
1
2
3
4
SELECT MSysObjects.Database
FROM MSysObjects
GROUP BY MSysObjects.Database
HAVING (((MSysObjects.Database) IS NOT NULL));
PS. Буду благодарен за конструктивную критику
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.09.2011, 14:04
Ответы с готовыми решениями:

Как открыть запароленную базу Access
Добрый день , копировал на работе базу Access ,но дома не открывается -пишет Необходимы разрешения системного администратора либо...

Что означает сжать базу?
Что означает сжать базу, Где эта команда находится, для чего ее применяют, как выполнение этой команды отразится на информации, которая...

Сжать и восстановить связанную базу
Ситуация такая: база разделена на две части - клиентскую и серверная. В клиентской - формы, запросы и т.п. В серверной - таблицы и данные. ...

1
Эксперт MS Access
 Аватар для alvk
7459 / 4592 / 302
Регистрация: 12.08.2011
Сообщений: 14,380
28.09.2011, 02:36
Вообще непонятно, зачем потребовалось сжимать так часто базу? Я вот, например, у себя в программах раз в два-три месяца сжатие делаю, а то и реже.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
28.09.2011, 02:36
Помогаю со студенческими работами здесь

Как сжать базу данных из программы VB ?
Скажем, у меня открыт Connection к БД ACCESS с именем CNN. Можно ли выполнить некую команду типа: CNN.execute(SQL-statement) ...

Функция сжать и восстановить базу данных
Здравствуйте друзья. Хочу функцию сжать и восстановить базу данных повесить на кнопку закрытия базы, чтобы каждый раз при закрытии базы она...

Что означает сжать базу?
Что означает сжать базу, Где эта команда находится, для чего ее применяют, как выполнение этой команды отразится на информации, которая...

Как программно сжать access-овскую базу?
Нужно из одной таблицы выбрать некоторые записи, пронумеровать их и вывести на экран Для этого выбранные записи пихаю в другую таблицу,...

Как на С# программно сжать базу Access 2010
Здравствуйте Уважаемые Гуру! Собственно вопрос указан в названии темы сообщения программно сжать базу Access 2010 силами С# Как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru