Лена |
Отправлено: 23.11.2006, 14:08 |
|
Мастер участка
Группа: Участник
Сообщений: 501
|
Для настройки соединения я предусмотрела в программе вызов стандартного окна настроек от olegenty:
DataModule2->ADOConnection1->ConnectionString = PromptDataSource(reinterpret_cast(Handle), DataModule2->ADOConnection1->ConnectionString);
После того как пользователь выбрал имя источника данных в этом окне, как настроить ADOConnection1 на это новое соединение?
Например я заведомо выбираю не правильное соединение, жму ОК, а в моих гридах информация не пропадает и исключение не возникает.
CODE |
void __fastcall TForm1::N1Click(TObject *Sender)
{
try{
AnsiString DS;
DataModule2->ADOConnection1->Connected = false;
DS = PromptDataSource(reinterpret_cast<unsigned int>(Handle), DataModule2->ADOConnection1->ConnectionString);
DataModule2->ADOConnection1->ConnectionString = DS;
DataModule2->ADOConnection1->Connected = true;
DataModule2->ClientDataSetKey->Open();
DataModule2->ClientDataSetKey->First();
DataModule2->ClientDataSetDoors->Open();
DataModule2->ClientDataSetDoors->First();
DataModule2->ClientDataSetOrgan->Open();
DataModule2->ClientDataSetOrgan->First();
DataModule2->ClientDataSetVis->Open();
DataModule2->ClientDataSetVis->First();
DataModule2->ClientDataSetGrup->Open();
DataModule2->ClientDataSetGrup->First();
DataModule2->ClientDataSetRule->Open();
DataModule2->ClientDataSetRule->First();
DataModule2->ClientDataSetLog->Open();
DataModule2->ClientDataSetLog->First();
}
catch(...)
{
ShowMessage("Не удалось связаться с сервером!");
}
}
|
Отредактировано Лена — 23.11.2006, 14:35 |
|
Лена |
Отправлено: 23.11.2006, 14:48 |
|
Мастер участка
Группа: Участник
Сообщений: 501
|
Наверное так правильно:
CODE |
AnsiString DS;
DataModule2->ADOConnection1->Connected = false;
DS = PromptDataSource(reinterpret_cast<unsigned int>(Handle), "");
DataModule2->ADOConnection1->ConnectionString = DS;
DataModule2->ADOConnection1->Connected = true;
|
Теперь надо в ini все записать и использовать при следующем запуске, а как оследить нажатие кнопки Отмена в этом окне?
Отредактировано Лена — 23.11.2006, 15:53 |
|
olegenty |
Отправлено: 23.11.2006, 16:43 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
никак. только по изменению ConnectionString или его отсутствию.
|
|
AVC |
Отправлено: 23.11.2006, 17:05 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Точно, ни как.
Я видел у вас AnsiString Connection string лучше WideString (кажется были какие то проблемы)
Например так
CODE |
WideString constr = DM->Ses2005->ConnectionString;
if (constr.IsEmpty()) constr = "Provider=Microsoft.Jet.OLEDB.4.0";
DM->Ses2005->ConnectionString = PromptDataSource((unsigned int)Handle, constr);
if (DM->Ses2005->ConnectionString != constr)
{ if (!DM->Connect2005()) AddLog("Не могу установить связь с БД");
}
| |
|
Лена |
Отправлено: 24.11.2006, 16:39 |
|
Мастер участка
Группа: Участник
Сообщений: 501
|
Спасибо за разъяснения! |
|