팁란에 올려 주신 디비 로그인에 대한 질문입니다.
저는 오라클을 사용하구 있구요. 아래 같은 방법으로 로그인 폼을 작성해서
사용하는데요.. 접속이 완료될때는 상관없지만 접속이 실패될경우 보여지는
다음과 같은 메시지를 showmessage로 처리할수 없을까요?
-------------------------------------------------------------
----Unknown user name or password. --
----ORA-01017 : 사용자명/암호가 부적합,로그온할 수없습니다. --
----Alias : myDB --
-------------------------------------------------------------
=====================================================================
TDatabase 컴포넌트를 사용하면 사용자가 서버 데이터에 로그인하는 과정을 직접 제어할수 있슴다. 기본 로그인 대화상자는 사용자 이름과 패스워드만을 묻지만, 특정한 상황에서는 그 이외의 정보를 사용자에게 물을 수도 있슴다. 아니만 단지 대화상자의 모습을 좀더 멋지고 예쁘게 꾸미고 싶을 수도 있슴다. 어쨌든 기본 로그인 대화상자가 마음에 들지 않는다면 로그인 대화상자를 직접 작성해서 사용할수도 있슴다.
우선, TDatabase.LoginPrompt 속성을 True 로 함다. 그담에 TDatabase.OnLogin 이벤트에서 사용자 로그인 대화상자를 띄웁니다. OnLogin 이벤트는 TDatabase.loginPrompt 속성이 True인 상태에서 TDatabase.Connected 속성이 True가 되면 실행됨다.
다음이 사용자 로그인 폼
function OKLogin(AloginParams: TStrings): word;
var
FrmLogin : TFrmlogin;
begin
FrmLogin := TFrmlogin.Create(Application);
try
Result := Frmlogin.ShowModal;
if Result = mrOK then
begin
ALoginParams.Values['USER NAME'] := Frmlogin.edtUserName.Text;
ALoginParams.Values['PASSWORD'] := Frmlogin.edtPassWord.Text;
end;
finally
Frmlogin.Free;
end;
end;
다음에 TDatabase.Onlogin 이벤트에서..
begin
Case NativeError of
1005 : result := '비밀번호가 올바르지 않습니다.';
1017 : result := '사용자 ID나 비밀번호가 올바르지 않습니다.';
1 : result := '같은 키값을 가지는 자료가 이미 존재합니다.';
54 : result := '다른 사용자가 같은 자료로 작업하고 있습니다. '
+'잠시후에 다시 시도해 보십시오';
12150..12285,12500..12699 :
result := '네트워크가 올바르게 동작하는지 확인하고 네트워크설정이 올바른지 확인하십시오.';
2291 :
result := '자료를 저장할 수 없습니다'#13+
'이 자료가 참조해야 하는 기본자료가 없습니다.';
2292 :
result := '자료를 수정하거나 삭제할 수 없습니다.'#13+
'이 자료를 참조하고 있는 자료가 있습니다.';
1400,1407 :
result := '자료를 저장할 수 없습니다'#13+
'반드시 입력해야 하는 값을 넣지 않았습니다.';
1401,//inserted value too large for column
911,//Invalid Character}
1800..1899 //날짜와 관련된 오류
:
result := Format('%s',[Copy(Message,Pos(':',message)+2,Length(message))]);
20000..20999 : begin
result := Copy(Message,Pos(':',message)+2,Length(message));
result := Format('%s',[Copy(result,0,Pos('ORA',result)-1)]);
end;
3113..3114 :
result := '서버와의 연결이 끊어졌습니다.'#13+' 프로그램을 종료한 후에 다시 로그인하십시오.';
else
result := '데이터베이스 오류입니다.'#13+SAsktoSysadmin;
end;
end;