Форум: "Начинающим";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];
ВнизЕсли ошибка соединения - закрыть приложение. Как это сделать? Найти похожие ветки
← →
Dron2 (2008-05-06 22:01) [0]Уважаемые мастера!
Имеется СУБД. При возникновении ошибки соединения (по тем или иным причинам) с БД появляется несколько системных сообщений. Как сделать чтобы появлялось толко мое сообщение, например - "Ошибка соединения" и программа закрывалась?
← →
Anatoly Podgoretsky © (2008-05-06 22:18) [1]> Dron2 (06.05.2008 22:01:00) [0]
Правильно не так, правильно убрать твое Супер сообщение.
А приложение можно закрыть, если закрыть главную форму.
← →
Dron2 © (2008-05-06 22:22) [2]Соединение с БД осуществляется в datamodule, a он создается раньше чем главная форма. Как поступить?
← →
Dron2 © (2008-05-06 22:36) [3]Иначе говоря нужно прервать процесс создания форм и закрыть приложение если появилась ошибка соединения, без выдачи служебных сообщений об ошибке.
← →
korneley © (2008-05-06 22:43) [4]Суецид приложения -
halt(Code)
.
> Dron2 © (06.05.08 22:22) [2]
> Соединение с БД осуществляется в datamodule, a он создается
> раньше чем главная форма. Как поступить?
Обрабатывать исключения на этапе подключения, естесственно.
← →
Kolan © (2008-05-07 00:10) [5]Aoolication.Terminate
← →
Германн © (2008-05-07 01:24) [6]
> Dron2 © (06.05.08 22:22) [2]
>
> Соединение с БД осуществляется в datamodule, a он создается
> раньше чем главная форма. Как поступить?
>
А зачем соединение осуществлять "в datamodule"?
← →
Dron2 © (2008-05-07 07:52) [7]>korneley © (06.05.08 22:43) [4]
>Обрабатывать исключения на этапе подключения, естесственно.
Try except это мне понятно. Беру участок кода где осуществляется соединение, а что написать после except чтобы завершить программу?
>Kolan © (07.05.08 00:10) [5]
>Application.Terminate
тоже пробовал. не работает.
>Германн © (07.05.08 01:24) [6]
>А зачем соединение осуществлять "в datamodule"?
Так ведь в datamodule все компоненты содинения с БД. Я всегда так делаю. Это неправильно?
← →
Рамиль © (2008-05-07 09:02) [8]
> >Application.Terminate
> тоже пробовал. не работает.
Не может не работать, ты просто не знаешь как оно работает.
У тебя точно в Design time все коннекты закрыты?
← →
Юрий Зотов © (2008-05-07 09:44) [9]
program Project1;
uses
Forms,
Unit1 in "Unit1.pas" {Form1},
Unit2 in "Unit2.pas" {DataModule1: TDataModule};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TDataModule1, DataModule1);
if not DataModule1.ConnectionError then
begin
Application.CreateForm(TForm1, Form1);
Application.Run
end
end.
===========================================
unit Unit2;
interface
uses
SysUtils, Classes, Dialogs;
type
TDataModule1 = class(TDataModule)
procedure DataModuleCreate(Sender: TObject);
private
FConnectionError: boolean;
public
property ConnectionError: boolean read FConnectionError;
end;
var
DataModule1: TDataModule1;
implementation
{$R *.dfm}
procedure TDataModule1.DataModuleCreate(Sender: TObject);
begin
try
// Здесь - код соединения с БД. При ошибке возбуждаем исключение:
raise Exception.Create("Ошибка соединения с БД");
except
on E: Exception do
begin
FConnectionError := True;
ShowMessage(E.Message);
end
end
end;
end.
← →
Ega23 © (2008-05-07 09:47) [10]
program .....;
uses
.....
var hnd:THandle;
ss:string;
begin
ss:=ExtractFileName(paramstr(0) );
hnd:=CreateMutex(nil, false, PChar(ss) );
if GetLastError = ERROR_ALREADY_EXISTS then
begin
Beep(100,200); //MessageBeep ->in WinProcs
ReleaseMutex(hnd);
Exit;
end;
Application.Initialize;
Application.CreateForm(TDMpas, DMpas); // Создание датамодуля
if not DMpas.LoginOK then
begin
DMpas.Free;
DMpas:=nil;
ReleaseMutex(hnd);
Exit;
end;
Application.CreateForm(TFMain, FMain); // Создание главной формы
Application.Run;
end.
← →
Рамиль © (2008-05-07 09:55) [11]
> Ega23 © (07.05.08 09:47) [10]
А реализация метода TDMpas.LoginOK хде? :)
← →
Ega23 © (2008-05-07 10:00) [12]
> А реализация метода TDMpas.LoginOK хде? :)
У Юры Зотова... :))))
← →
Dron2 © (2008-05-07 19:47) [13]Огромное всем спасибо!!!
Соединил ответы Юрия Зотова и EGA23. Все заработало в лучшем виде!! Вы просто супер мастера!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 7.877 c