FireBird Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
파이어버드 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
IBPhoenix
FireBird Main site
볼랜드포럼 광고 모집

FireBird Q&A
[3572] Re:Re:Re[질문]델파이가...
아폴론 [] 5983 읽음    2010-10-12 17:34
전봉수 님이 쓰신 글 :
: 아폴론님 자세한 답번 너무 고맙습니다.
: 저도 처음에는 IBQUery,IBTransaction,IBDatabase,DataSource를 사용하였습니다. 그런데요 IBDatabase
: 를 마우스로 더블클릭해서 셋팅할때 로컬로 하니까 않되서 Database에 IP와 FDB경로를 입력하여야 하기때문
: 에 배포 할곳마다  프로그램을 수정하여야 하는 문제가 있는것 같았습니다. Firebird_ODBC를 사용하면
: Datamodule Qyery 2개언저 놓고 제공된 Utile만 프로그램에 연결시키면 DBgrid를 사용하지 않는한 DB컴포
: 넌트를 폼에 더이상 언져놓을 필요가 없거든요? Win 7이 앞으로 많이 보급이 될텐데 방법을 다시 바꿔야 되는데
: 도무지 감이 잡히지 않습니다. 좀더 배울수 있게 이메일로 약간의 소스라도 공개 해 줄수 없나요?
: 제 이메일 주소는 jeunbskr@naver.com 입니다. 부탁드립니다.

"배포 할곳마다  프로그램을 수정하여야 하는 문제" 는 없습니다.
User마다 경로가 다르다면  경로를 셋팅 하게끔 해주어야 하지요..

프로그램을 각 회사에 배포했다면  각 회사마다 물론 경로가 다르겠지요..
그럼 데이터베이스 경로를 프로그램이 찾아 오도록 설계가 되어야합니다.

처음에 데이터베이스를 닫고.. 로그인 시란든가?. 시점에 
데이터베이스 경로를 변수로 가져 오도록합니다.

이 경로값은  레지스트리를 읽어서 가져오게 합니다.
레지스트리에 값이 없다면(최초 실행시는 없겠죠)  팝업을 띄워서 경로를 등록하게 합니다.

   아래는 레지스트리를읽어서 DB경로를 가져 옵니다.
   FDrive := '';
   ADDrive := '';
   Reg:= TRegistry.Create;
   try
     Reg.RootKey := HKEY_CURRENT_USER;
     Reg.OpenKey('SOFTWARE\Program_Path\',false);
     if Reg.HasSubKeys then begin

     end else
     begin
        C_dr := Reg.ReadString('Kubn');
        F_Dr := Reg.ReadString('Path');
     end;
   finally
      Reg.Free;
   end;

   try
      if C_dr = 'S' then begin //고정IP
         TR_path := F_dr+':C';        
         FDrive  := F_dr+':C:\DataBase\JDATABASE.FDB';   //DB경로
         Zipdrive := F_dr+':C:\DataBase\ZIPCODE.FDB';    //우편번호 디비 경로
      end else
      if C_dr = 'N' then begin //컴퓨터이름
         TR_path := F_dr; 
         FDrive  := '\\'+F_dr+'\C:\DataBase\JDATABASE.FDB';   //DB경로
         Zipdrive:= '\\'+F_dr+'\C:\DataBase\ZIPCODE.FDB';     //우편번호 디비 경로
      end else
      if C_dr = 'C' then begin //클라이언트
         TR_PATH := 'C';        
         FDrive  := 'C:\DataBase\JDATABASE.FDB';
         Zipdrive := 'C:\DataBase\ZIPCODE.FDB';     //우편번호 디비 경로
      end else
      begin
         showmessage('DataBase가 설치된 컴퓨터의 설정을 하셔야 합니다. ');
         //설정값이 없으므로 경로를설정 할 수 있는 창을 띄운다.
         if Tr001F = nil then
            Tr001F := TTr001F.Create(Self);
         if Tr001F.WindowState = wsMinimized then
            Tr001F.WindowState := wsNormal else
            Tr001F.show;
      end;
   except
     showmessage('Registry의 DataBase 경로 확인 불가. 관리자에게 문의 바랍니다. ');
   end;

아래는 디비를 오픈합니다.
       if Datamd.DBApollon.Connected = False then begin
         if WindowsVersionStr = 'Windows Vista' then begin
            if Length(TRIM(FDrive)) <= 35 then
               Datamd.DBApollon.DatabaseName := ':'+FDrive else
               Datamd.DBApollon.DatabaseName := ':'+FDrive
         end else
         begin
            Datamd.DBApollon.DatabaseName := FDrive;
         end;
         Datamd.DBApollon.Params.Add('user_name=SYSDBA');
         Datamd.DBApollon.Params.Add('password=masterkey');
         Datamd.DBApollon.Connected := True;
      end;

정답은 아닙니다만..뭐 이런 방식으로 하고 있습니다..

+ -

관련 글 리스트
3559 [질문]델파이가 않깔린 서버의 클라이언트에서 연결이 왜 않되는지요. 전봉수 3172 2010/10/06
3564     Re:[질문]델파이가 않깔린 서버의 클라이언트에서 연결이 왜 않되는지요. 까막.윤창희 2705 2010/10/08
3565         Re:Re:[질문]델파이가 않깔린 서버의 클라이언트에서 연결이 왜 않되는지요. 전봉수 3197 2010/10/08
3567             Re:[질문]델파이가... 아폴론 2590 2010/10/08
3569                 Re:Re:[질문]델파이가... 전봉수 3482 2010/10/11
3570                     Re[질문]델파이가... 아폴론 2604 2010/10/11
3571                         Re:Re[질문]델파이가... 전봉수 5923 2010/10/12
3572                             Re:Re:Re[질문]델파이가... 아폴론 5983 2010/10/12
3574                                 Re:Re:Re:Re[질문]델파이가... 전봉수 2727 2010/10/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.