Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / DAO3.51 и DAO3.6 в одной программе / 8 сообщений из 8, страница 1 из 1
28.08.2007, 21:40
    #34759720
Дмитрий П.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO3.51 и DAO3.6 в одной программе
В программе (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
28.08.2007, 22:50
    #34759804
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO3.51 и DAO3.6 в одной программе
Хм. Давненько с 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
29.08.2007, 10:16
    #34760358
Garrick
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO3.51 и DAO3.6 в одной программе
А что, если открыть обе базы через DAO 3.6, то будут проблемы с чтением из базы версии 3.51? По-моему, никаких проблем быть не должно. Зачем огород городить?
...
Рейтинг: 0 / 0
29.08.2007, 10:35
    #34760431
AndrF
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO3.51 и DAO3.6 в одной программе
GarrickА что, если открыть обе базы через DAO 3.6, то будут проблемы с чтением из базы версии 3.51? По-моему, никаких проблем быть не должно. Зачем огород городить?

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

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

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

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

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

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

to Бенедикт:

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


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