Проблема с методом Open в ADO

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Летучий Обезьян
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 24.05.2006 (Ср) 8:55

Проблема с методом Open в ADO

Сообщение Летучий Обезьян » 23.08.2006 (Ср) 8:59

Господа! Проблема такая. Пишу:

Код: Выделить всё
sFile = App.Path + "\" + cbTests.Text + sExt
     
        MyCon.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + sFile, "Admin", sFixedPassword


В ответ лезет ошибка. "Не удается запустить приложение. Системная БД отсутствует или открыта с монопольным доступом другим пользователем." Однако других пользователей вроде нет - пробовал выполнять код сразу после перезагрузки компа.

С тем же паролем БД нормально открывается в Access.

Такой вариант тоже не катит:

Код: Выделить всё
MyCon.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + sFile + "; User ID=Admin; Password=" + FixedPassword

Заранее благодарен.

P.S. Уже знаю, что можно было бы открывать через ODBC, но надо именно через Jet.

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 23.08.2006 (Ср) 9:02

msgbox sFile ;)
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

Летучий Обезьян
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 24.05.2006 (Ср) 8:55

Сообщение Летучий Обезьян » 23.08.2006 (Ср) 9:06

Не понял. Файл-то существует, если ты об этом: C:\current\m1\shab_enc.m1t. И в Access он открывается. Зашифрованная запароленная БД, только с другим расширением. Файлы с нестандартным расширением я и раньше открывал (с Data control), так что дело не в этом.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 23.08.2006 (Ср) 9:08

Он имеет в виду, может с получившейся строчкой косяк какой. Например, забыл точку перед расширением.
Лучший способ понять что-то самому — объяснить это другому.

Летучий Обезьян
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 24.05.2006 (Ср) 8:55

Сообщение Летучий Обезьян » 23.08.2006 (Ср) 9:14

Да нет, с файлом БД порядок. Он нормально открывался, пока не был запаролен и зашифрован. Беда в том, что прога у меня уже готова и отлажена, но нужно было добавить пароль. И теперь эта БД не открывается.

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

Сообщение alibek » 23.08.2006 (Ср) 9:17

Если у тебя зашифрованная база, к ней надо системную базу указывать (MDW).
Код: Выделить всё
Set objConnection = New ADODB.Connection
objConnection.Provider = "Microsoft.Jet.OLEDB.4.0"
objConnection.Properties("Data Source") = "C:\file1.mde"
objConnection.Properties("Jet OLEDB:System Database") = "C:\file1.mdw"
objConnection.Properties("User Id") = "Admin"
objConnection.Properties("Password") = "Password"
objConnection.Open
Lasciate ogni speranza, voi ch'entrate.

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

Сообщение alibek » 23.08.2006 (Ср) 9:18

А если ты пароль добавил не на пользователя, а на базу, то он в другом месте задается, в .Properties("Jet OLEDB:Database Password")
Lasciate ogni speranza, voi ch'entrate.

Летучий Обезьян
Начинающий
Начинающий
 
Сообщения: 7
Зарегистрирован: 24.05.2006 (Ср) 8:55

Сообщение Летучий Обезьян » 23.08.2006 (Ср) 9:28

Всё, заработало. :D
Оказывается достаточно было указать коннекшнстринг вот в таком виде: "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;Jet OLEDB:Database Password=MyDbPassword;"

Ребята, всем спасибо. Особенно - alibek'у. :)

P.S. Кстати, alibek, твоя подпись наводит на фразу: two beer or not to be...)

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 23.08.2006 (Ср) 12:07

Antonariy писал(а):Он имеет в виду, может с получившейся строчкой косяк какой.
Летучий Обезьян писал(а):Да нет, с файлом БД порядок.
Нда...
Летучий Обезьян писал(а):Оказывается достаточно было указать коннекшнстринг вот в таком виде: "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\somepath\mydb.mdb;Jet OLEDB:Database Password=MyDbPassword;"
А msgbox помог бы...
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!


Вернуться в Visual Basic 1–6

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

Сейчас этот форум просматривают: Yandex-бот и гости: 87

    TopList