Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.05.2016, 23:14   #1
~Данил~
Новичок
Джуниор
 
Регистрация: 15.05.2016
Сообщений: 2
По умолчанию Проблема подключения БД access с паролем

Добрый вечер.

По заданию на БД Access должен стоять пароль, сама БД должна динамически подключаться к программе.
Подключение произвожу через ADOConnection.
Строку ConectionString меняю программно. Проблема заключается в следующем.
Если прописать путь к БД сразу, т.е.
Код:
String connect="Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;"
"Data Source=D:\\Диплом\\MyDatabase.mdb;" // или просто указать название БД
"Jet OLEDB:Database Password=123;"
"Mode=Share Deny None;"
"Jet OLEDB:System database="";"
"Jet OLEDB:Registry Path="";"
"Jet OLEDB:Engine Type=5;"
"Jet OLEDB:Database Locking Mode=1;"
"Jet OLEDB:Global Partial Bulk Ops=2;"
"Jet OLEDB:Global Bulk Transactions=1;"
"Jet OLEDB:New Database Password="";"
"Jet OLEDB:Create System Database=False;"
"Jet OLEDB:Encrypt Database=False;"
"Jet OLEDB:Don't Copy Locale on Compact=False;"
"Jet OLEDB:Compact Without Replica Repair=False;"
"Jet OLEDB:SFP=False";
То подключение выполняется успешно и всё работает.

А если взять путь к БД из OpenDialog:
Код:
String connection="Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;"
"Data Source="+ OpenDialog1->FileName; //т.е. поменять всего одну строку
"Jet OLEDB:Database Password=123;"
"Mode=Share Deny None;"
"Jet OLEDB:System database="";"
"Jet OLEDB:Registry Path="";"
"Jet OLEDB:Engine Type=5;"
"Jet OLEDB:Database Locking Mode=1;"
"Jet OLEDB:Global Partial Bulk Ops=2;"
"Jet OLEDB:Global Bulk Transactions=1;"
"Jet OLEDB:New Database Password="";"
"Jet OLEDB:Create System Database=False;"
"Jet OLEDB:Encrypt Database=False;"
"Jet OLEDB:Don't Copy Locale on Compact=False;"
"Jet OLEDB:Compact Without Replica Repair=False;"
"Jet OLEDB:SFP=False";
то вылезает вот такая ошибка


Всю голову уже сломал, что ему не нравится, может быть кто сталкивался, подскажите, пожалуйста!
~Данил~ вне форума Ответить с цитированием
Старый 16.05.2016, 01:19   #2
_Bers
Старожил
 
Регистрация: 16.12.2011
Сообщений: 2,329
По умолчанию

попробуйте так:

Код:
String connection="Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;"
"Data Source="+ OpenDialog1->FileName; //т.е. поменять всего одну строку

+  // конкатенация

"Jet OLEDB:Database Password=123;"
"Mode=Share Deny None;"
"Jet OLEDB:System database="";"
"Jet OLEDB:Registry Path="";"
"Jet OLEDB:Engine Type=5;"
"Jet OLEDB:Database Locking Mode=1;"
"Jet OLEDB:Global Partial Bulk Ops=2;"
"Jet OLEDB:Global Bulk Transactions=1;"
"Jet OLEDB:New Database Password="";"
"Jet OLEDB:Create System Database=False;"
"Jet OLEDB:Encrypt Database=False;"
"Jet OLEDB:Don't Copy Locale on Compact=False;"
"Jet OLEDB:Compact Without Replica Repair=False;"
"Jet OLEDB:SFP=False";
при этом убедитесь, что содержимое OpenDialog1->FileName
содержит эквивалентную первому варианту строку.
при необходимости,
не забудьте добавить точку с запятой в конце.

Последний раз редактировалось _Bers; 16.05.2016 в 01:23.
_Bers вне форума Ответить с цитированием
Старый 16.05.2016, 10:04   #3
~Данил~
Новичок
Джуниор
 
Регистрация: 15.05.2016
Сообщений: 2
Хорошо

Мда. Не стоит по ночам всё же работать
Спасибо, причина кроется где-то именно в продолжении строки, Ваш код работать отказался с той же ошибкой, я сделал чуть по другому и он заработал:
Код:
String con="Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;"
"Jet OLEDB:Database Password=123;"
"Mode=Share Deny None;"
"Jet OLEDB:System database="";"
"Jet OLEDB:Registry Path="";"
"Jet OLEDB:Engine Type=5;"
"Jet OLEDB:Database Locking Mode=1;"
"Jet OLEDB:Global Partial Bulk Ops=2;"
"Jet OLEDB:Global Bulk Transactions=1;"
"Jet OLEDB:New Database Password="";"
"Jet OLEDB:Create System Database=False;"
"Jet OLEDB:Encrypt Database=False;"
"Jet OLEDB:Don't Copy Locale on Compact=False;"
"Jet OLEDB:Compact Without Replica Repair=False;"
"Jet OLEDB:SFP=False;"
"Data Source="+ OpenDialog1->FileName; // строку с прописанием пути просто убрал сюда
Тему можно считать закрытой.
~Данил~ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Открыть базу Access с паролем в Delphi S_007 БД в Delphi 21 30.05.2015 09:32
проблема подключения к Access rekbrjaaa C# (си шарп) 2 03.05.2015 11:32
Выгрузка данных в PowerPivot из БД Access с паролем s8259 Microsoft Office Excel 0 26.03.2015 00:35
как соединить Access с Delphi. после подключения сообщение "не выполнена проверка подключения из-за ошибки при инициализации татьяна09 БД в Delphi 1 19.05.2014 09:47
Как открыть БД Access 2010 (.accdb) с паролем Dux БД в Delphi 2 16.07.2012 21:15