C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
ADOConnection1, настройки во время выполнения
Лена
Отправлено: 23.11.2006, 14:08


Мастер участка

Группа: Участник
Сообщений: 501



Для настройки соединения я предусмотрела в программе вызов стандартного окна настроек от olegenty: smile.gif
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



Спасибо за разъяснения! smile.gif

Вернуться в Работа с базами данных в C++Builder