아폴로님 답변 감사합니다.
님께서 답변하여주시 소스를 토대로하여 응용하여 보겠습니다.
아폴론 님이 쓰신 글 :
: 전봉수 님이 쓰신 글 :
: : 아폴론님 자세한 답번 너무 고맙습니다.
: : 저도 처음에는 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;
:
: 정답은 아닙니다만..뭐 이런 방식으로 하고 있습니다..
|