Q&A

  • 타락천사님의 팁에 대해서 질문있읍니다.
팁란에 올려 주신 디비 로그인에 대한 질문입니다.
저는 오라클을 사용하구 있구요. 아래 같은 방법으로 로그인 폼을 작성해서
사용하는데요.. 접속이 완료될때는 상관없지만 접속이 실패될경우 보여지는
다음과 같은 메시지를 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 이벤트에서..
2  COMMENTS
  • Profile
    이추형 2002.08.28 02:39
    function SelectDBerrMsg(const NativeError : integer;const message : string):string;
    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;
  • Profile
    이남호 2002.08.28 21:58
    답변 너무나 감사드립니다.
    제가 너무 초보자라 사용법을 잘 모르거든요..
    저같은 경우는 다음처럼 로긴에러처리 할때 만들어 주신 함수를 집어 넣어서
    쓰고 싶은데요.. 에러가 납니다.
    사용법좀 가르쳐 주세요. 그리고. SAsktoSysadmin 은 어떤 값을 집어 넣어야 되는 건지요..


    procedure TFRM_RECEIPT.Database1Login(Database: TDatabase; LoginParams: TStrings);
    begin
         try
            OKLogin(LoginParams);
         except
            SelectDBerrMsg(self) ;  <-- 몰라서 이렇게 ㅠㅠ
         end;
    end;
    • 최수림
    • 2002.08.28 00:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.08.28 01:33
      hsr/////////////////////////////////////////////////////// EditCaption을 사용하시면 됩니다. proced...
    • Galaxy
      2002.09.03 19:15
      죄송합니다. 이렇게 늦게 답변을 드립니다. 제가 이야기 하는 답변은 정답이 아닐수 있습니다. 다만 참...
    • 이남호
    • 2002.08.27 22:09
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이추형
      2002.08.28 02:39
      function SelectDBerrMsg(const NativeError : integer;const message : string):string; begin  &n...
    • 이남호
      2002.08.28 21:58
      답변 너무나 감사드립니다. 제가 너무 초보자라 사용법을 잘 모르거든요.. 저같은 경우는 다음처럼 로긴...
    • 김상수
    • 2002.08.27 21:34
    • 6 COMMENTS
    • /
    • 0 LIKES
    • Galaxy
      2002.08.27 23:47
      안녕하세요 수고 많습니다. 첨부한 그림처럼 원하는지요? ?????????????? 그럼 수고 하세요 비가 많이...
    • 김상수
      2002.08.27 23:54
      부산은 비 아직 안오는데요..^^; 답변 감사드리구요... 공백에 선은 제거 할 수는 없겠죠??? 첨부...
    • Galaxy
      2002.08.28 00:20
      안녕하세요 수고 많습니다. 님의 말씀대로 스트링 그리드에서는 라인을 제거 할수 없습니다. 그러나 들...
    • 김상수
      2002.08.28 00:47
      답변 감사드리구요... 전설의 콤포넌트 꼭 봤으면 좋겠네요..^^ 그럼 수고하세요..
    • 이추형
      2002.08.27 23:10
      원하는 경우에 맞추는 SQL문을 작성하여 사용합니다. 컴포넌트가 있다고 하더라도 TEMP 파일을 만들어 한...
    • 김상수
      2002.08.27 23:38
      다시 봐주세요
    • 김영호
    • 2002.08.27 20:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.08.27 20:44
      우선 백업모드가 아카이브모드로 되어 있어야 될것같기도 한데... http://www.oracle.com/kr/support/we...
    • 나옹이
    • 2002.08.27 20:30
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 델퐁
    • 2002.08.27 20:24
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 백화현
    • 2002.08.27 20:17
    • 1 COMMENTS
    • /
    • 0 LIKES
    • KDDG_ZZOM
      2002.08.27 20:25
      너무 막연하네요...^^ TPrinter로 하시면 되는데... 아마 강의실에 양병규님이 올리신 자료보시고 해보...
    • byun
    • 2002.08.27 20:14
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.08.27 21:08
      hsr/////////////////////////////////////////////////////// 에러메세지를 써놓으셨다면 알수있겠지만.....
    • 이정용
    • 2002.08.27 19:56
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.08.27 21:20
      hsr///////////////////////////////////////////////////// 델파이 IDE의 설정 말씀하시나요? 델 버젼에...
    • 아폴론
    • 2002.08.27 19:46
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2002.08.27 19:55
      안녕하세요. 한원희입니다. 그냥, 해당 이벤트 핸들러의 매개변수만 제대로 맞춰주면 될것 같습니다. ...
    • 아폴론
      2002.08.28 00:26
      var Tkey : Word; begin    Tkey := vk_return;      Fm102.ac_srnoKey...
    • 아폴론
      2002.08.28 00:03
      허걱 그래도 에러가 나네요. 안되면 노가다 엄청 해야 되는데.... Fm102.ac_srnoKeyDown(Self, VK_RET...
    • 이광수
      2002.08.28 01:34
      procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;  Shift: TShiftState); 2번...
    • 홍남경
    • 2002.08.27 19:39
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2002.08.27 20:03
      안녕하세요. 한원희입니다. 이게 맞을런지 잘 모르겠지만, 아래와 같이 한번 해보세요. function Fil...
    • 홍남경
      2002.08.28 08:43
      한가지만 더요~~~ 정적인 DLL사용은 함수 사용후에 DLL이나 메모리를 반납을 해야 하나요? *** 프로그...
    • 한원희
      2002.08.30 21:25
      안녕하세요. 한원희입니다. 답변이 늦었습니다. ^^; 글쎄요. 정적으로 DLL을 호출하게 되면, 따로 DLL...
    • 홍성락
      2002.08.28 00:59
      hsr/////////////////////////////////////////////////////////// 전체를 팁에도 올려서 많은사람들이 손...
    • 이추형
      2002.08.28 02:09
      1. 엑셀에서 '다른 이름으로 저장' 2. 파일형식을 '텍스트(탭으로분리)(*.txt)' 선택 3. TEXT파일로 저...
    • KDDG_ZZOM
      2002.08.27 19:50
      파워빌더같은 툴을 이용하면 편한데...^^ 아니면 오라클 로더기능을 사용하세요... 사용법은 오라클책같은...
    • 김문식
      2002.08.28 19:07
      텍스트(탭으로 분리)서 저장할때 탭으로 분리 형식이 지원하지 않는 기능이 있습니다 라는 메시지가 뜹니...
    • 이원상
    • 2002.08.27 19:16
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 한원희
      2002.08.27 19:51
      안녕하세요. 한원희입니다. FillChar 프로시저를 사용하시면 될것 같습니다.
    • 조만수
    • 2002.08.27 05:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 임형호
      2002.08.27 06:20
      1번 질문에 대한 것은요. 전역변수와 지역변수의 차이입니다. 간단히 말해서.... 올려주신 문장처럼 기...
    • 나그네
    • 2002.08.27 05:41
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 홍성락
      2002.08.27 05:47
      hsr///////////////////////////////////////////////// Chart1.Series[0].Clear; 것 처럼 생성된 각 Ser...