Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Компоненты и классы
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 29.09.2015, 12:55
Maxjuvefan Maxjuvefan вне форума
Прохожий
 
Регистрация: 24.08.2015
Сообщения: 30
Версия Delphi: delphi 2010
Репутация: 10
По умолчанию Открытие БД через OpenDialog с помощью ADOConnection

Доброго времени суток. Написал программу для работы с БД, используя для этого компоненты ADOConnection, ADOQuery, DataSource, DBGrid и OpenDialog1. БД с расширением mdf открывает через свойство ConnectionString компонента ADOConnection. Добавляет новые данные, редактирует, удаляет. Только вот мне понадобилось открывать БД щелчком по кнопке через компонент OpenDialog1. Как это можно сделать?
Ответить с цитированием
  #2  
Старый 29.09.2015, 19:14
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,003
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Не надо дублировать сообщения.
2. Собственно, ConnectionString в ADOConnection - это простая строка. Тебе надо просто поменять там имя файла базы данных на то, которое ты получишь из OpenDialog.FileName. Т.е. я бы настроит один раз строку, потом скопировал бы ее как константу себе в код, заменим в ней имя файла БД на %s, далее воспользовался бы функцией Format.
Код:
const
  myConnectionString = '...%s...';

procedure TForm1.ButtonOpenClick(Sender : TObject);
begin
  if OpenDilalog1.Execute then
  begin
    ADOConnection.Connected := False;
    ADOConnection.ConnectionString := Format(myConnectionString,[OpenDilalog1.FileName]);
    ADOConnection.Connected := True;
  end;    
end;
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
Maxjuvefan (01.10.2015)
  #3  
Старый 01.10.2015, 11:53
Maxjuvefan Maxjuvefan вне форума
Прохожий
 
Регистрация: 24.08.2015
Сообщения: 30
Версия Delphi: delphi 2010
Репутация: 10
По умолчанию

Проблема такая: устанавливаю соединение с базой 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;

Последний раз редактировалось lmikle, 01.10.2015 в 17:58.
Ответить с цитированием
  #4  
Старый 01.10.2015, 12:06
Maxjuvefan Maxjuvefan вне форума
Прохожий
 
Регистрация: 24.08.2015
Сообщения: 30
Версия Delphi: delphi 2010
Репутация: 10
По умолчанию

Еще такой вопрос. Нужно подключиться к бд sql. Файл, открываемый через opendialog, идет в data sourse= . Что должен содержать этот файл и как называться (любое имя)? Это же не может быть файл *.mdf, т.к. подключенный к базе он не может быть открыт, а не подключенный, он не является источником данных...

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

procedure TFormMain.ConnectionBDClick(Sender: TObject);
begin
   if OpenDialog2.Execute then
   begin
      ADOConnection1.Connected := false;
      AdoConnection1.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Data Source=' + s;
      ADOConnection1.Connected := true;
      ShowMessage('Соединение установлено!');
   end
   else
      ShowMessage('Соединение не удалось выполнить!');
end;

Последний раз редактировалось lmikle, 01.10.2015 в 17:58.
Ответить с цитированием
  #5  
Старый 01.10.2015, 18:05
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,003
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

1. Пользуемся тегами.
2. Лови эксепшн и обрабатывай его. Кстати, можно для начала просто проверить есть ли такой файл через функцию FileExists и/или в диалоге поставить флажок, что бы не позволял выбрать несуществующий файл.
Код:
procedure TFormConnection.ПодключитьClick(Sender: TObject);
begin   
  FormMain.ADOConnection1.Connected := false;
  FormMain.AdoConnection1.ConnectionString:='Provider=MSDASQL.1;Persist Security Info=False;Data Source=' + s;
   Try
     FormMain.ADOConnection1.Connected := true;
     if FormMain.ADOConnection1.Connected = true then
        ShowMessage('Соединение установлено!');
  Except
    On E : Excaption Do
       ShowMessage('Соединение не удалось установить!'#13#10+E.Message);
  End;
end;
3. Если не ошибаюсь, речь идет о выборе подключения либо к локальному файлу (Access), либо к MS SQL Server. Тут есть 2 варианта. Либо просто пользуемся функцией BuidConnectionString, которая позволяет построить строку подключения полностью. Либо начинаешь рыть интернет на тему получения списка доступных SQL-серверов.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 17:33.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter