powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi + dbExpress + MSSQL
7 сообщений из 7, страница 1 из 1
Delphi + dbExpress + MSSQL
    #32271296
VIP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VIP
Гость
Уважаемые господа программисты, подскажите как правильно:

Для подключения к MSSQL я на основе стандартного компонента TSQLConnection создал свой, и добавил несколько процедур и функций.
Одна из функций это
function Open: boolean; virtual;
она вызывает форму регистрации, для ввода имени и пароля.

---------------------------------------------------------------------------
function TBankSQLConnection.Open: boolean;
var Form: TWaitConnectionForm;
Done: boolean;
begin
LoginPrompt:=False;
Result:=True;
Done:=False;
if (ConnectPassword<>'') and (ConnectName<>'') then
begin
Form:=TWaitConnectionForm.Create( nil );
Application.ProcessMessages;
if LoginPrompt = False then
begin
Params.Values['User_Name'] := ConnectName;
Params.Values['Password'] := ConnectPassword;
Screen.Cursor:=crSQLWait;
end ;
try
Inherited Open;
Done:=True;
except
ConnectPassword:='';
end ;
Screen.Cursor:=crDefault;
Form.Free;
end ;
while not Done do begin
if GetConnectParams then
begin
Form:=TWaitConnectionForm.Create( nil );
Application.ProcessMessages;
if LoginPrompt = False then
begin
Params.Values['User_Name'] := ConnectName;
Params.Values['Password'] := ConnectPassword;
Screen.Cursor:=crSQLWait;
end;
try
Inherited Open;
Screen.Cursor:=crDefault;
Form.Free;
Done:=True;
Break;
except
on E: EDatabaseError do begin
Screen.Cursor:=crDefault;
Form.Free;
Application.ProcessMessages;
ShowErrorMessage('Ошибка: '+E.Message);
end ;
else
begin
Screen.Cursor:=crDefault;
Form.Free;
Application.ProcessMessages;
if Assigned(Application) then
ApplicationHandleException(Self);
end;
end;
end
else
begin
Result:=False;
Break;
end;
end;
if
Done then
begin
if
(ConnectPassword='') and Assigned(SetPassword) then
SetPassword ( Self );
ConnectPassword:='';
end;
Application.ProcessMessages;
end;
------------------------------------------------------------------------------
Вторая функция собственно и есть Форма для регистрации

function TBankSQLConnection.GetConnectParams: boolean;

var Form: TSQLConnectDialog;
begin
Form:=TSQLConnectDialog.Create( nil );
ConnectPassword:='';
Form.NameField.Text:=ConnectName;
Form.PasswordField.Text:=ConnectPassword;
Form.OKExit:=False;
Form.ShowModal;
try
if Form.OKExit then begin
ConnectName:=Trim(Form.NameField.Text);
ConnectTime:=Time;
ConnectPassword:=Trim(Form.PasswordField.Text);
Result:=True;
end else
Result:=False;
finally
Form.Free
end;

Ну и конечно конструктор
constructor TBankSQLConnection.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
KeepConnection:=True;
ConnectPassword:='';
ConnectName:='';
end;

----------------------------------------------------------------------------
В программе я кидаю этот компонент (TBankSQLConnection) на форму настраиваю его для подключения и в событие FormCreate пишу:

if not BankSQLConnection.Open then Halt ( 1 )
...
Рейтинг: 0 / 0
Delphi + dbExpress + MSSQL
    #32271303
Mik Prokoshin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А в чем вопрос-то ? Тестируй !
...
Рейтинг: 0 / 0
Delphi + dbExpress + MSSQL
    #32271307
VIP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VIP
Гость
Уважаемый Mik Prokoshin не вопросы а мои действия хотелось бы услышать мнения специалистов кто работает с dbExpress + MSSQL
может есть какие свои предложения хотелось бы услышать!
...
Рейтинг: 0 / 0
Delphi + dbExpress + MSSQL
    #32271308
VIP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VIP
Гость
Но и есть вопрос. Как перехватить код ошибки в данном коде?
...
Рейтинг: 0 / 0
Delphi + dbExpress + MSSQL
    #32271380
Александр Спелицин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну так где именно у Вас ошибка?
...
Рейтинг: 0 / 0
Delphi + dbExpress + MSSQL
    #32271408
VIP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VIP
Гость
TO Александр Спелицин

Ошибка может появится в любое время. Самая первая ошибка при регистрации
пользователя с SQL Server. Хочу получить только код ошибки и локализовать его по русски вот пример который записывается в файл appexc.log

22.09.03 9:27:00. Exception EDatabaseError in module MDIAPP.exe at 000749C5.
SQL State: 42000, SQL Error Code: 18456
Login failed for user 'Sergei'.


его я получаю при помощи процедуры:

const LogName: string = 'C:\appexc.log';
procedure LogException;
var fs : TFileStream;
m : Word;
buf: array [0..511] of Char;
begin
if FileExists(LogName) then
m :=fmOpenReadWrite else
m :=fmCreate;
fs := TFileStream.Create(LogName, m);
fs.Seek(0, soFromEnd);
StrPCopy(buf, DateTimeToStr(Now)+'. ');

ExceptionErrorMessage(ExceptObject, ExceptAddr, @buf[StrLen(buf)],
SIZEOF(buf)-StrLen(buf));
StrCat(buf,#13#10);
fs.WriteBuffer(buf, StrLen(buf));
fs.Free;
end;

хотелось бы так: но это всё с BDE работает

procedure ShowMyDBMessage(Error : EDBEngineError);
begin
case GetNativeError(Error) of
10003 : Application.MessageBox(PChar(WrongUserName),
PChar('Ошибка регистрации'),MB_OK+MB_ICONERROR );
547 : Application.MessageBox(PChar('Имеются документы удаление не возможно'),
PChar('Ошибка удаления'),MB_OK+MB_ICONERROR );
else OldDBMessage(Error);
end ;
end;
...
Рейтинг: 0 / 0
Delphi + dbExpress + MSSQL
    #32273735
Фотография SlavaKV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем изобретать, велосипед, я делаю проще (если вопрос в подключении). В create форма А вызаваю форму Login через процедуру, в форме Login для ввода пароля и имени и получаю их в форму А, затем в Try..Except подключаюсь к Серверу. Если конект успешен форма Login уничтожается, если нет то три попытки и дальше приложение либа работает либа закрывается
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Delphi + dbExpress + MSSQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]