DBEngine.SystemDB

Sonata

Почему в пределах одной процедуры не проходит переназначение файла рабочих групп?
Sub()
 DBEngine.SystemDB = 'C:system1.mdw' 'тут все в порядке, 
 ...
 DBEngine.SystemDB = 'C:system2.mdw' 'а вот на это уже не реагируем
End Sub
Ну что такое?
6 ответов

Sonata

>Почему в пределах одной процедуры не проходит переназначение файла >рабочих групп?>Sub() > DBEngine.SystemDB = 'C:system1.mdw' 'тут все в порядке, Интересно, а открыли файл вы с другим mdw, не с C:system1.mdw? Для меня вообще непонятно, как можно переопределить файл рабочей группы. Для этого новый объект DBEngine надо создать или использовать PrivDBEngine.


Sonata

1. моя очередь удивляться:-)), а что такое PrivDBEngine? 2. а что, DBEngine - это объект и его можно создавать? 3. изначальная задача проста - нужно перезащитить базу. из кода. значит (схематично) сначала подключиться к старому mdw, вернуть права, скопировать все в новую незащищенную базу (стандарнтый system.mdw), потом подключиться к новому mdw и защитить все объекты. Выходит придется-таки переназначать енжину systemDb, разве нет? Мне в самом деле интересно, что вы по этому поводу думаете.


Sonata

Я думаю, что вам надо создать новый DBEngine с новым файлом рабочей группы, создать workspace с пользователем имеющим административные права в этой группе, создать в этом workspace новый mdb и после этого экспортировать объекты из старой mdb в новую.
   Dim ndb As Database, ws As Workspace, dben As New PrivDBEngine
 
   dben.SystemDB = 'C:system2.mdw'
   Set ws = dben.CreateWorkspace('', 'SuperAdmin', 'password')
   Set ndb = ws.CreateDatabase('NewDB.mdb')
   ...
Можно и так создать новый Dbengine, но я использовал PrivDBEngine:
Dim dben As DAO.DBEngine
Set dben = CreateObject('DAO.DBEngine')
...


Sonata

и все-таки у меня просьба, откройте секрет PrivDBEngine. Прежде, чем поинтересоваться что это такое я, ясное дело, попытался спросить у МСДНа - так вот он не знает. и хелп аксесса молчить как рыба об лед. Где бы почитать про сей загадочный объект?


Sonata

Это недокументировано F2 (Object Browser) Show Hidden Memebers Используя Google, вы найдете достаточно упоминаний о priDBEngine.


Sonata

сударь, да вы просто фокусник! действительно есть такая штука, но как черт побери, вы ее нашли? Признаюсь честно ObjBrowser мне нифига не помог, хорошо хоть с гуглем управилась:-(( В любом случае я вам сильно признателен. спасибо.