| 
| 
 | Вопрос # 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.
 |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |