|
Вопрос # 6 238/ вопрос открыт / |
|
Доброго времени суток, уважаемые эксперты!
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™ (статус: Доктор наук), 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.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|