Поиск:

Ответ в темуСоздание новой темы Создание опроса
> ADOConnection1, настройки 
:(
    Опции темы
Лена
Дата 23.11.2006, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Для настройки соединения я предусмотрела в программе вызов стандартного окна настроек:
DataModule2->ADOConnection1->ConnectionString = PromptDataSource(reinterpret_cast<unsigned int>(Handle), DataModule2->ADOConnection1->ConnectionString);

После того как пользователь выбрал имя источника данных в этом окне, как настроить ADOConnection1 на это новое соединение?
Например я заведомо выбираю не правильное соединение, жму ОК, а в моих гридах информация не пропадает и исключение не возникает.
Код

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("Не удалось связаться с сервером!");
       }
}



Наверное так правильно:

   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:52
PM MAIL   Вверх
Coala
Дата 24.11.2006, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 70
Регистрация: 4.5.2006
Где: Москва

Репутация: нет
Всего: 0



Можно проще - в дизайн-тайме законнектиться с базой, затем скопировать полученную командную строку и использовать её, как болванку, в своей программе, подставляя вместо зашитого в ней имени БД, то, которое выдает, например OpenDialog:
Код

  String cs = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + OpenDialog->FileName + ";Persist Security Info=False";
  ADOConnection->ConnectionString = cs;
 
Надеюсь - понятно, что пример приведен для Акцесса smile 
А пугать юзеров диалогом, предназначенным для программистов - не есть хорошо smile 

Это сообщение отредактировал(а) Coala - 24.11.2006, 12:30
PM MAIL   Вверх
Лена
Дата 24.11.2006, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 879
Регистрация: 16.8.2006

Репутация: 11
Всего: 11



Просто такое требование: программа должна уметь настраиваться на соединение созданное пользователем. Будущее программы такое: существует база данных их семи таблиц на сервере. Продвинутый пользователь, он же администратор, сам создает соединение с этой базой,  при этом он волен сам, выбирать имя соединения.  Он запускает мое приложение и сам настраивать соединение при первом запуске. Далее настройки соединения записывается в ini файл и при следующем запуске программы автоматом читаются. Все это я уже реализовала. Что касается кнопки "Отмена", то выяснила на другом форуме, что отследить ее нажатие невозможно.  smile 

PM MAIL   Вверх
Vyacheslav
Дата 24.11.2006, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Цитата(Лена @  24.11.2006,  16:58 Найти цитируемый пост)
Что касается кнопки "Отмена", то выяснила на другом форуме, что отследить ее нажатие невозможно.

Счас. smile  Есть элементарный способ отследить нажатие Cancel. В этом случае возвращаемая строка  будет эквивалентна строке , подставлемой в качестве второго параметра. Например все можно сделать следующи образом 
Код

 DS = PromptDataSource(reinterpret_cast<unsigned int>(Handle), "");
 if(DS != "") {
            DataModule2->ADOConnection1->ConnectionString = DS;
            ....
 }
 else {  //Cancel
         ....
 }





--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.1037 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.