Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.09.2008, 17:47   #1
Fantom
Пользователь
 
Аватар для Fantom
 
Регистрация: 10.05.2008
Сообщений: 41
По умолчанию Проверка на существование БД перед запуском приложения

Приведите, пожалуйста, программный код, с помощью которго можно было бы перед запуском самой программы, которая использует в своей работе базу данных, проверять наличие этой базы данных. И в случае отсутствия базы данных показывать модальное окно, содержащее сообщение о том, что файл базы данных не найден. На модальном окне должно быть две кнопки: Yes и No. Далее, при нажатии пользователем на кнопку Yes ничего не должно происходить, а при нажатии на кнопку No—приложение должно закрываться .
Fantom вне форума Ответить с цитированием
Старый 07.09.2008, 18:57   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

проверить возможность установки соединения с помощью компонента TADoConnection или аналогичного.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 07.09.2008, 20:40   #3
Fantom
Пользователь
 
Аватар для Fantom
 
Регистрация: 10.05.2008
Сообщений: 41
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
проверить возможность установки соединения с помощью компонента TADoConnection или аналогичного.
А по какому событию нужно запускать проверку? Т.е. где разместить эту проверку в программном коде?
Fantom вне форума Ответить с цитированием
Старый 07.09.2008, 23:09   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

обычно такие проверки ставятся перед созданием главной формы, т.е. перед строкой

application.CretaeForm(mainform, TMainform);

но если connection для проверки лежит на этой форме то проверку придется делать только после этой строки
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 08.09.2008, 09:30   #5
za4ot
Пользователь
 
Регистрация: 06.04.2008
Сообщений: 22
По умолчанию

по дефолту ставим IBDataBase1.Connected:=false;
Код:
procedure TForm1.FormCreate(Sender: TObject);
begin
  try
    IBDataBase1.Connected:=true;
  except
    Form2.ShowModal;
  end;
end;
Кидаем на форму 2 кнопки, Да Нет
и ставим им в свойствах ModalResult: mrYes и mrNo

Код:
procedure TForm2.Button1Click(Sender: TObject);
begin
  Form2.CloseModal;
end;

procedure TForm2.Button2Click(Sender: TObject);
begin
  Form2.CloseModal;
end;

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  if ModalResult=mrNo then form1.Close;  
end;
удачи
za4ot вне форума Ответить с цитированием
Старый 08.09.2008, 21:45   #6
Fantom
Пользователь
 
Аватар для Fantom
 
Регистрация: 10.05.2008
Сообщений: 41
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
обычно такие проверки ставятся перед созданием главной формы, т.е. перед строкой

application.CretaeForm(mainform, TMainform);

но если connection для проверки лежит на этой форме то проверку придется делать только после этой строки
Ситуация такая:
На главной форме лежит компонент DBGrid. Таблица связана с DataSource. DataSource связан с DataTable. DataTable связан с ADOConnection. Компоненты DataSource, DataTable, AdoConnection я поместил в отдельный модуль DataModule1. Соединение с базой описано в свойстве ConnectionString компонента ADOConnection.
Вот код исходника .dpr:
Код:
program Telephon;

uses
  Forms,
  SysUtils,
  Dialogs,
  MainUnit in 'MainUnit.pas' {Form1},
  DataModuleUnit in 'DataModuleUnit.pas' {DataModule1: TDataModule},
  TownBookUnit in 'TownBookUnit.pas' {TownBookForm},
  AboutUnit in 'AboutUnit.pas' {AboutForm},
  EditFormUnit in 'EditFormUnit.pas' {EditRecordForm},
  Unit2 in 'Unit2.pas' {Form2};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TDataModule1, DataModule1);
  Application.CreateForm(TTownBookForm, TownBookForm);
  Application.CreateForm(TAboutForm, AboutForm);
  Application.CreateForm(TEditRecordForm, EditRecordForm);
  Application.CreateForm(TForm2, Form2);
  Application.Run;

end.
Куда именно поместить код проверки? После:
Цитата:
Application.CreateForm(TDataModule1 , DataModule1);
Ведь компонент ADOConnection находится в модуле DataModule1.

Последний раз редактировалось Fantom; 08.09.2008 в 21:49.
Fantom вне форума Ответить с цитированием
Старый 08.09.2008, 23:01   #7
sysyman
Пользователь Подтвердите свой е-майл
 
Аватар для sysyman
 
Регистрация: 04.07.2007
Сообщений: 75
По умолчанию

просто по событию главной формы Form1.show ставиш
try
ADO1.Open;
except
//создаеш свою форму с предупреждением
form2:=Tform2.Create(nil);
form2.Showmodal;
exit;
end;
по событию form2.onclose
ставиш
form1.Close;

если хочеш погляди этот проект, там я именно так сделал
гляди unit6 и unit8

http://www.programmersforum.ru/attac...0&d=1184910335

Последний раз редактировалось sysyman; 08.09.2008 в 23:04.
sysyman вне форума Ответить с цитированием
Старый 08.09.2008, 23:09   #8
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

переместить Createform(Tdatamodule1....) на первое место среди создаваемых форм (руками) и после него делать проверки
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Существование элемента в массиве Carbon Помощь студентам 10 31.03.2008 19:03
Как поставить заставку перед запуском главной формы программы? NiganInterCOM Общие вопросы Delphi 2 22.02.2008 16:11
Как проверить существование потока? John_chek Общие вопросы Delphi 3 17.01.2008 15:16
Проверка на существование Lonix Общие вопросы Delphi 2 19.03.2007 19:42