Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
0 / 0 / 1
Регистрация: 10.08.2015
Сообщений: 45

Открытие БД через OpenDialog с использованием ADOConnection

29.09.2015, 12:51. Показов 2364. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Написал программу для работы с БД, используя для этого компоненты ADOConnection, ADOQuery, DataSource, DBGrid и OpenDialog1. БД с расширением mdf открывает через свойство ConnectionString компонента ADOConnection. Добавляет новые данные, редактирует, удаляет. Только вот мне понадобилось открывать БД щелчком по кнопке через компонент OpenDialog1. Как это можно сделать?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
29.09.2015, 12:51
Ответы с готовыми решениями:

Открытие БД через OpenDialog в AdoConnection
Создал программку для работы с БД. Использовал для этого компоненты ADOConnection, ADOQuery1, DataSource1, DBGrid1 и OpenDialog1. Все...

Открытие через OpenDialog в memo
Делаю свой текстовый редактор и никак не могу сделать нормальное открытие через OpenDialog в memo,подскажите пожалуйста как правильно...

adoconnection и opendialog
Здравствуйте. Проблема такая при срабатывании OpenDialog ( точнее при его закрытии) слетают соединения со всех ADOConnection компонентов....

6
Заблокирован
30.09.2015, 08:48
Постав в ADOConnection свойство Connected в false.
Потом в ButtonClick :

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
var path : string;
begin
  try
      OpenDialog1.Filter:='Файлы БД|*.mdf';
      if OpenDialog1.Execute then path:=OpenDialog1.FileName;
 
      if not(fileexists(path)) then ShowMessage ('База не найдена')
         else begin
                    ADOConnection1.Connected := false;
                    ADOConnection1.ConnectionString:= 
                    {сюда скопируй это свойство с компонента, только вместо пути конкатенируй переменную path, 
                      например для Access выглядело бы приблизительно так: 
     'Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;data Source=' +
      Path + 
     ';Persist Security Info=False;' }  ; 
                    ADOConnection1.Connected := true;
         end;
  except
    on E : Exception do
      ShowMessage(E.ClassName+' ошибка : '+E.Message);
  end;
end;
1
0 / 0 / 1
Регистрация: 10.08.2015
Сообщений: 45
01.10.2015, 12:07  [ТС]
Проблема такая: устанавливаю соединение с базой sql через AdoConnection. Ввожу в поле edit имя базы. Если введено имя существующей базы, то соединение устанавливается. А если несуществующей - то delphi 2010 выдает ошибку Error "Источник данных не найден и не указан драйвер, используемый по умолчанию". Как сделать так, чтобы выводилось корректное соообщение о т ом, что соединение не удалось установить?

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;
Добавлено через 11 минут
Еще такой вопрос. Нужно подключиться к бд sql. Файл, открываемый через opendialog, идет в data sourse= . Что должен содержать этот файл и как называться (любое имя)? Это же не может быть файл *.mdf, т.к. подключенный к базе он не может быть открыт, а не подключенный, он не является источником данных...

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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;
0
Заблокирован
01.10.2015, 12:22
Файл *.mdf - это и есть сама база, этот файл не нужно "открывать". OpenDialog-ом ты выбираешь файл, а в самой программе используешь только его имя, чтобы установить подключение.

Добавлено через 4 минуты
Цитата Сообщение от Maxjuvefan Посмотреть сообщение
Как сделать так, чтобы выводилось корректное соообщение о т ом, что соединение не удалось установить?
Посмотри на мой код выше - просто оберни в try ... except

И убери проверку
Цитата Сообщение от Maxjuvefan Посмотреть сообщение
if FormMain.ADOConnection1.Connected = true
1
0 / 0 / 1
Регистрация: 10.08.2015
Сообщений: 45
01.10.2015, 12:31  [ТС]
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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;
      ShowMessage('Соединение установлено!');
      FormMain.Open_File.Enabled:=True;
      FormMain.PoiskNomera.Enabled:=True;
      FormMain.SaveRezInExcel.Enabled:=True;
      FormMain.PlayAudio.Enabled:=True;
      FormMain.SaveAudio.Enabled:=True;
      FormMain.VvodNomeraDlyaPoiska.Enabled:=True;
      FormConnection.Close
   except
      on e:Exception do ShowMessage('Соединение не удалось установить!: '+e.Message);
   end;
end;
Все равно сначала выводит ошибку delphi Debugger Exception Notification, что источник данных не найден и не указан драйвер, используемый по умолчанию, а потом уже корректое сообщение. Можно ли как-нибудь избавиться от "системной" ошибки?
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
01.10.2015, 12:42
Цитата Сообщение от Maxjuvefan Посмотреть сообщение
Все равно сначала выводит ошибку delphi Debugger Exception Notification
Это только в отладчике. Запусти программу саму по себе, не из Дельфи.
1
0 / 0 / 1
Регистрация: 10.08.2015
Сообщений: 45
01.10.2015, 12:47  [ТС]
Спасибо)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
01.10.2015, 12:47
Помогаю со студенческими работами здесь

Открытие файлов через OpenDialog без участия пользователя
А возможно ли миновать этот этап выбора файлов? Что бы просто, скажем, по нажатию кнопки все в папке открылось? Известна папка,...

C++ Builder 6 - Открытие графического файла с помощью OpenDialog, и последующее сохранение через SaveDialog
Как заставить программу запихнуть в Image графический файл формата .jpeg с помощью OpenDialog, и последующим сохранением через SaveDialog?...

Открытие БД Access с разными правами доступа в ADOConnection
Приветствую! Дано: в сетевой папке лежит access'овская БД. Доступ к папке ограничен. К ней одновременно обращаются с разных компьютеров...

OpenDialog и открытие файлов
Доброго! Моя программа работает с текстовыми файлами, через обычный TStringList подгрузив их через OpenDialog. С программой работает...

Открытие нескольких файлов в OpenDialog
Добрый день, подскажите пожалуйста как сделать,уже голову сломал. Есть программа, открывает файл Word и заменяет закладку на текст из...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru