На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! ПРАВИЛА РАЗДЕЛА · FAQ раздела Delphi
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.
Обязательно указание:
1) типа базы данных (Paradox/Oracle/Interbase и т.п.)
2) способа доступа к базе данных (ODBC/ADO/DAO/BDE и т.п.)
Например: Paradox/BDE, MS Access/ADO

Наиболее часто задаваемые вопросы:
Базы даных для начинающих. Первые шаги. Понятие о BDE.
Переход на клиент-сервер и начала ADO
Приёмы работы с BLOB (OLE/Memo) полями
Запросы и параметры или как избавиться от многих проблем. Проблемы с датами в запросах.
Нужели мне нужно устанавливать BDE? (или почему не работает программа на другом компьютере)
Модераторы: Bas, Rouse_
  
> Установка соединения с БД
    Проблема такая: устанавливаю соединение с базой sql через AdoConnection. Ввожу в поле edit имя базы. Если введено имя существующей базы, то соединение устанавливается. А если несуществующей - то delphi 2010 выдает ошибку Error "Источник данных не найден и не указан драйвер, используемый по умолчанию". Как сделать так, чтобы выводилось корректное соообщение о т ом, что соединение не удалось установить?

    procedure TFormConnection.Edit1Change(Sender: TObject);
    var Edi : TEdit;
    begin
    Edi := Sender as TEdit;
    s:=edi.Text;
    end;

    procedure TFormConnection.ПодключитьClick(Sender: TObject);
    begin
    FormMain.ADOConnection1.Connected := false;
    FormMain.AdoConnection1.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Data Source=' + s;
    FormMain.ADOConnection1.Connected := true;
    if FormMain.ADOConnection1.Connected = true then
    begin
    ShowMessage('Соединение установлено!');
    end
    else
    ShowMessage('Соединение не удалось установить!');
    end;
      >>> TFormConnection.ПодключитьClick(Sender: TObject);
      У кнопки имя Подключить кириллицей набрано? :) Лучше переименовать в Connect, на всякий случай...

      Edit1Change зачем нужен? Если только для присвоения глобальной переменной s, то выкинуть.
      Кстати, глобальные переменные лучше не использовать http://www.gunsmoker.ru/2011/04/blog-post.html

      >>> чтобы выводилось корректное соообщение о т ом, что соединение не удалось установить
      Сообщение как раз корректное, и можно с большой вероятностью узнать истинную причину. Но если очень хочется поменять, то через блок try...except, примерно так
      ExpandedWrap disabled
        procedure TFormConnection.ConnectClick(Sender: TObject);
        begin
          FormMain.ADOConnection1.Connected := false;
          FormMain.AdoConnection1.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Data Source="' + Edit1.Text +'"'; // переменная s не нужна
          try
            FormMain.ADOConnection1.Connected := true;
            ShowMessage('Соединение установлено!');
          except
            ShowMessage('Соединение не удалось установить!');
          end;
        end;
        Цитата maxjuvefan @
        Как сделать так, чтобы выводилось корректное соообщение о т ом, что соединение не удалось установить?
        На Билдере - вот так;
        ExpandedWrap disabled
          bool __fastcall TFDM::Connect() {
            String dbName = Format("%s%s", ARRAYOFCONST((ExtractFilePath(Application->ExeName), DB_FILE_NAME)));
          //  для старших версий акцесса и ACCDB-файла:
          //  Connection->ConnectionString = Format("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=%s;Persist Security Info=False", ARRAYOFCONST((dbName)));
          //  для версий 2000-2007 и MDB-файла:
            Connection->ConnectionString = Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;Persist Security Info=False", ARRAYOFCONST((dbName)));
            try {
              Connection->Open();
            }
            catch (Exception *E) {
              Application->MessageBox(E->Message.c_str(), L"Ошибка при соединении с базой", MB_ICONWARNING); // !!!!!!!!!!!!!!!!!
              return false;
            }
            return true;
          }
        0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
        0 пользователей:


        Рейтинг@Mail.ru
        [ Script execution time: 0,0297 ]   [ 17 queries used ]   [ Generated: 19.04.24, 07:22 GMT ]