ActiveConnection ругается

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
smartlink
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 22.01.2004 (Чт) 6:51
Откуда: Tashkent

ActiveConnection ругается

Сообщение smartlink » 26.10.2005 (Ср) 11:27

С недавнего времени я начал изучать VBA и вот начали траблы. Когда запускаю, ругается ActiveConnection:

Файл 'D:\WF\Mine\Docs' не может быть открыт ядром... Файл уже открыт другим пользователем для монопольного доступа или требуется разрешение на просмотр данных.


Вот код:

Код: Выделить всё
Const DatabasePath = "D:\WF\Mine\Docs"
Const ProviderStr = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& " Data Source = " & DatabasePath

Dim Table As New Table
Dim Catalog As New ADOX.Catalog
Dim Key As New ADOX.Key

Catalog.ActiveConnection = ProviderStr
Table.Name = "CONTACTS"
Table.ParentCatalog = Catalog


Не смог найти решение, может кто сталкивался с этим. Если смотреть доступы, то они везде проставлены.
Спасибо.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.10.2005 (Ср) 11:32

Во-первых, ActiveConnection это объектная переменная, и ее надо присваивать через Set. И уж конечно, не строковой переменной.
Во-вторых, что ты открываешь? Должен быть указан файл БД.
В-третьих, ConnectionString открывается не так. Должно быть что-то типа Catalog.ActiveConnection.Open <ConnectionString>, только Catalog.ActiveConnection надо предварительно инициализировать (например, Set Catalog.ActiveConnection = New ADODB.Connection).
И в-четвертых, что твой код должен делать? Я ничего не понял.
Lasciate ogni speranza, voi ch'entrate.

smartlink
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 22.01.2004 (Чт) 6:51
Откуда: Tashkent

Сообщение smartlink » 26.10.2005 (Ср) 11:47

Ну я делал все как было показано в книге :roll: я не думал что там могут быть ошибки :shock:

Когда я указал файл
Код: Выделить всё
Const DatabasePath = "D:\WF\Mine\Docs\contacts.mdb"


Вот что говорит:
Файл уже открыт другим пользователем для монопольного доступа или требуется разрешение на просмотр данных.База данных была приведена пользователем 'Admin' на компьютере 'PC01' в состояние, препятствующее ее открытию или блокировке.


Код просто пытается законнектиться к базе.

smartlink
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 22.01.2004 (Чт) 6:51
Откуда: Tashkent

Сообщение smartlink » 26.10.2005 (Ср) 11:50

Вот полный код, может тогда прояснится

Sub CreateTablet()
On Error GoTo EE
Const DatabasePath = "D:\WF\Mine\Docs"
Const ProviderStr = "Provider=Microsoft.Jet.OLEDB.4.0;" _
& " Data Source = " & DatabasePath

Dim Table As New Table
Dim Catalog As New ADOX.Catalog
Dim Key As New ADOX.Key

Catalog.ActiveConnection = ProviderStr
Table.Name = "CONTACTS"
Table.ParentCatalog = Catalog
Table.Columns.Append "ID", adInteger
Table.Columns("ID").Properties("Autolncrement") = True
Table.Columns.Append "FIRST_NAME", adVarWChar, 20
Table.Columns.Append "LAST_NAME", adVarWChar, 20
Catalog.Tables.Append Table
Key.Name = "ID"
Key.Type = adKeyPrimary
Key.Columns.Append "ID"
Catalog.Tables("CONTACTS").Keys.Append Key
Set Catalog.ActiveConnection = Nothing

EE:
Debug.Print Err.Description

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.10.2005 (Ср) 12:01

Опять не понял.
Скажи, что надо сделать, словами. Создать таблицу в БД?
Lasciate ogni speranza, voi ch'entrate.

smartlink
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 22.01.2004 (Чт) 6:51
Откуда: Tashkent

Сообщение smartlink » 26.10.2005 (Ср) 12:13

Да, этот код служит для создания таблицу в БД

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.10.2005 (Ср) 12:28

Глянь тут: http://bbs.vbstreets.ru/viewtopic.php?t=13474
Тут универсальный класс, создающий таблицы из внешнего файла, но как создавать таблицы программно, из него понятно.
Lasciate ogni speranza, voi ch'entrate.

smartlink
Новичок
Новичок
 
Сообщения: 44
Зарегистрирован: 22.01.2004 (Чт) 6:51
Откуда: Tashkent

Сообщение smartlink » 26.10.2005 (Ср) 13:11

Спасибо! я просмотрю обязательно!

но я так не смог узнать что за проблема в том коде

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.10.2005 (Ср) 13:38

Проблема в том, что ты неправильно открываешь соединение.
Во-первых, для MDB-файла (при соединении через Jet) нужно обязательно указывать имя файла. А во-вторых, ты неправильно инициируешь соединение. Правда глянуть, что именно неправильно, мне сейчас негде. Скорее всего, как я написал, нужно открывать через Open.
Lasciate ogni speranza, voi ch'entrate.


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

    TopList