powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / DAO3.51 и DAO3.6 в одной программе
8 сообщений из 8, страница 1 из 1
DAO3.51 и DAO3.6 в одной программе
    #34759720
Дмитрий П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В программе (VB6 + DAO3.6) я сначала читаю из базы, созданной в DAO3.51, а затем хочу
записать в другую (DAO3.6 с защитой на уровне пользователей).
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
Set myBase = OpenDatabase("D:\base1.mdb, False, False)
sql = "SELECT RefDesignator From TComp;"
Set Table = = myBase.OpenRecordset(sql, dbOpenForwardOnly)
While Not Table.EOF
    ...........
    Table.MoveNext
Wend
Table.Close
myBase.Close

AA:
DBEngine.SystemDB = "D:\Secured.mdw"
Set wrkDefault = DBEngine.CreateWorkspace("NewWorkspace", "user","pass" ) 
Set myBase = wrkDefault.OpenDatabase("D:\base2.mdb")
..............
Но на CreateWorkspace возникает Run-time error 3028: "Не удается запустить приложение. Системная база данных отсутствует или открыта с монопольным доступом..."
Если в самом начале поставить "goto AA", то этой ошибки не возникает!

Подскажите, как решить проблему?

Спасибо.
...
Рейтинг: 0 / 0
DAO3.51 и DAO3.6 в одной программе
    #34759804
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм. Давненько с DAO не работал, но вопросик понравился.
Для одного DBEngine может быть задана только одна системная база.
В общем, следи за ручками:

Код: plaintext
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.
Public Sub Main()
    Dim PDBEngine As New DAO.PrivDBEngine
    Dim wrk1 As DAO.Workspace, wrk2 As DAO.Workspace
    Dim db1 As DAO.Database, db2 As DAO.Database
    Dim r As DAO.Recordset, s As String

    DBEngine.SystemDB = "C:\Temp\s11.mdw"
    Set wrk1 = DBEngine.CreateWorkspace("", "a1", "")
    Set db1 = OpenDatabase("C:\Temp\Bd1.mdb", False, False)
    s = "SELECT * From t1"
    Set r = db1.OpenRecordset(s, dbOpenForwardOnly)
    Do Until r.EOF
        Debug.Print "-", r( 0 ), r( 1 )
        r.MoveNext
    Loop
    r.Close

    PDBEngine.SystemDB = "C:\Temp\s22.mdw"
    Set wrk2 = PDBEngine.CreateWorkspace("", "a2", "")

    Set db1 = OpenDatabase("C:\Temp\Bd2.mdb", False, False)
    s = "SELECT * From t1"
    Set r = db1.OpenRecordset(s, dbOpenForwardOnly)
    Do Until r.EOF
        Debug.Print "=", r( 0 ), r( 1 )
        r.MoveNext
    Loop
    r.Close
End Sub
...
Рейтинг: 0 / 0
DAO3.51 и DAO3.6 в одной программе
    #34760358
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что, если открыть обе базы через DAO 3.6, то будут проблемы с чтением из базы версии 3.51? По-моему, никаких проблем быть не должно. Зачем огород городить?
...
Рейтинг: 0 / 0
DAO3.51 и DAO3.6 в одной программе
    #34760431
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickА что, если открыть обе базы через DAO 3.6, то будут проблемы с чтением из базы версии 3.51? По-моему, никаких проблем быть не должно. Зачем огород городить?

Дело не в версии MDB-шки.

А в том что для одного DBEngine может быть определена только одна системная база. Переназначить ее нельзя. В общем, решение приведено выше...
...
Рейтинг: 0 / 0
DAO3.51 и DAO3.6 в одной программе
    #34760478
Фотография Бенедикт
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий П.,
не пробовал, в качестве предположения: Set DBEngine = Nothing перед AA:
...
Рейтинг: 0 / 0
DAO3.51 и DAO3.6 в одной программе
    #34762949
Дмитрий П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to AndrF

Я так понял, что "C:\Temp\s22.mdw" я должен заменить на "D:\Secured.mdw" - этот файл я получил по команде Сервис\Защита\Мастер.

Но где взять "C:\Temp\s11.mdw", ведь первая база без защиты. Файл D:\base1.mdb сгенерила утилита ReportWriter из CAD пакета Mentor Graphics, при этом файл *.mdw не создаеся.
...
Рейтинг: 0 / 0
DAO3.51 и DAO3.6 в одной программе
    #34764244
AndrF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Дмитрий П.Но где взять "C:\Temp\s11.mdw", ведь первая база без защиты. Файл D:\base1.mdb сгенерила утилита ReportWriter из CAD пакета Mentor Graphics, при этом файл *.mdw не создаеся.

Да просто не указывай как в твоем примере - будет использован по умолчанию...
...
Рейтинг: 0 / 0
DAO3.51 и DAO3.6 в одной программе
    #34766106
Дмитрий П.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
to AndrF:

Спасибо, все плучилось.

to Бенедикт:

Set DBEngine = Nothing перед AA не устраняет ошибки.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / DAO3.51 и DAO3.6 в одной программе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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