Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 19.12.2009, 12:19
Yurk@@@ Yurk@@@ вне форума
Прохожий
 
Регистрация: 16.11.2009
Сообщения: 21
Репутация: 10
По умолчанию Путь к базе

Здравствуйте, нужна помощь.
Хочу сделать так, чтобы можно было самому указать путь к базе. Знаю,что можно поступить двумя способами:
1. Вручную переписать ConnectionString.
2. Сделать инсталяшку.
Сейчас у меня база находится в одной папке что и экзэшка - всё работает. Разумеется, в другом каталоге работать уже не будет.
Как сделать так: если база не найдена, то выдать соответствующее сообщение и предложить выбрать путь к базе самостоятельно.
Ответить с цитированием
  #2  
Старый 19.12.2009, 13:16
Йогурт Йогурт вне форума
Начинающий
 
Регистрация: 20.11.2009
Сообщения: 109
Репутация: 5
По умолчанию

Есть такой способ чтобы это сделать!

Например: создаешь на главной форме MainMenu в нём прописываешь к примеру Настройка пути к БД! В нем прописываешь такой вот код:

PHP код:
var
N1,N2,S1:string;
label m;
begin
Assignfile
(P1,'Имя файла куда будет писать путь, например idintifik.ini');
Rewrite(P1);
N1:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';
N2:=';Persist Security Info=False';
opendialog1.execute;
S1:=opendialog1.filename;
if 
s1='' then
begin
MessageDlg
('',mtError,[mbok],0);
goto 
m;
end;
DataModule1.ADOConnection1.ConnectionString:=N1+S1+N2;
Write(P1,s1);
m:closefile(P1);
end

Далее на главной форме в событии OnShow прописываешь:

PHP код:
label m;
var 
constr:string;
N1,N2:string;
begin
N1
:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=';
N2:=';Persist Security Info=False';
Assignfile(P1,'idintifik.ini');
{
$I-}
reset(P1);
{
$I+}
if 
IOResult<>0 then
begin
Application
.MessageBox('Не найден файла настройки пути','Ошибка!',MB_OK);
goto 
m;
end;
read(P1,constr);
DataModule1.ADOConnection1.ConnectionString:=n1+constr+n2;
Closefile(P1);
m:end

В ADOConnection делай поле пустым!

Далее запускай программу, нажимай настройка пути к БД и указывай путь к БД .mdb!
Ответить с цитированием
  #3  
Старый 19.12.2009, 15:17
Yurk@@@ Yurk@@@ вне форума
Прохожий
 
Регистрация: 16.11.2009
Сообщения: 21
Репутация: 10
По умолчанию

Спасибо! Всё работает!
Но есть один ньюанс: у меня запросы ссылаюстя на ConnectionString компанента ADOConnection,а оно пустое. А если у Query1 в поле active ставить true, то возникает ошибка "Не выполнена проверка подлинности".
Можно это как-нибудь отключть? Или надо программно активировать запросы при открытии формы.
Дело в том что при загрузке проги на главной форме есть DBGrid и он должен быть заполненным. В моём случае - пустое. Т.е так сразу и не понятно подключена база или нет.
Ответить с цитированием
  #4  
Старый 19.12.2009, 15:37
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А зачем-же вы для каждого запроса свое уникальное подключение организуете? Используйте одно общее подключение. Для этого сепциальное свойство в запросе есть - Connection.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 19.12.2009, 15:55
Yurk@@@ Yurk@@@ вне форума
Прохожий
 
Регистрация: 16.11.2009
Сообщения: 21
Репутация: 10
По умолчанию

Все запросы подключены к ADOConnection,тот в свою очередь имеет пустую строку ConnectionString. У запроса нельзя поставить св-во active в true.пишет "Не выполнена проверка подлинности".
Ответить с цитированием
  #6  
Старый 19.12.2009, 16:08
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

В дизайн-моде конечно нельзя, ведь строка подключения для ADOConnection будет сформирована только после запуска программы.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #7  
Старый 19.12.2009, 18:25
Yurk@@@ Yurk@@@ вне форума
Прохожий
 
Регистрация: 16.11.2009
Сообщения: 21
Репутация: 10
По умолчанию

Как тогда быть? Ведь таблицы даже не работают=(
Ответить с цитированием
  #8  
Старый 19.12.2009, 18:49
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Так вы наверное строку подключения получаете, а само подключение не активируете.
Код:
DataModule1.ADOConnection1.Open;
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:31.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter