Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 6 238

Раздел: C++
/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
C++ Builder 2007. Работаю с базой через ADO. Но вопрос не по самой базе.

При разработке мне нужно, чтобы у компонента TADOConnection было свойство Connected = true. Но при компиляции мне нужно чтобы в exe-шнике это же самое свойство было false. Потому что при Connected=true база данных подключается автоматически и мне при разработке удобно делать какие-то действия с базой. Но у заказчика база лежит не в том месте, где у меня и при включении программы выскакивают ошибки о том, что база не найдена, после нажатия на ОК у меня программа вытаскивает "правильный" путь и переподключается успешно. Но как бы сделать так, чтобы она с самого начала не подключалась?

Пробовал в конструктор модуля (Data Module) и в обработчике создания прописывать отключение:

//---------------------------------------------------------------------------
__fastcall TDataModule1::TDataModule1(TComponent* Owner)
  : TDataModule(Owner)
{
  my_base->Connected = false;
}
//---------------------------------------------------------------------------
void __fastcall TDataModule1::DataModuleCreate(TObject *Sender)
{
  my_base->Connected = false;
}
не получилось - всё равно выводит сообщение о неуспешности подключения.

Конечно, можно перед компиляцией сбрасывать это значение вручную в false, но это очень неудобно, т.к. тут же сбрасываются подобные свойства других компонентов, подключенных к базе, а их довольно много.

Егор Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Егор (статус: 10-ый класс)
Вопрос отправлен: 1 августа 2012, 21:12
Состояние вопроса: открыт, ответов: 0.


Мини-форум вопроса

Всего сообщений: 3; последнее сообщение — 4 августа 2012, 07:48; участников в обсуждении: 3.
min@y™

min@y™ (статус: Доктор наук), 2 августа 2012, 08:14 [#1]:

Цитата (Егор):

Но у заказчика база лежит не в том месте

Пусть переложит в нужное место и проблема отпадёт, как засохшее гуано.
И всего делов! :)
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
Вадим К

Вадим К (статус: Академик), 2 августа 2012, 14:37 [#2]:

у этого компонента есть такое событие - OnBeforeConnect. При Connected = true при запуске программы это событие вызовется перед подключением. Можно будет проверку вставить и все сделать.
Галочка "подтверждения прочтения" - вселенское зло.
Егор

Егор (статус: 10-ый класс), 4 августа 2012, 07:48 [#3]:

min@y™:

Цитата (min@y™):

Пусть переложит в нужное место и проблема отпадёт, как засохшее гуано.
И всего делов!

угу, в папку
C:\Documents and Settings\Yegor\Application Data\MyProg\
Зашибись просто. Особенно если учитывать, что у меня винХР, а у него может быть и вин7

Вадим К: да, свойство есть. и есть ещё одно - OnWillConnect. попробовал оба. или я не так делаю, или они не для этого предназначены.
void __fastcall TDataModule1::prog_baseBeforeConnect(TObject *Sender)
{
  my_base->Connected = false;
  my_base->Close();
}
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:55
Выполнено за 0.03 сек.