저의 방법 입니다.
아주 기초적인 방법일 것인데... 보다 고차원 적인 기법이 있으면 알려주십시요.
단점이 아주 많습니다.
1.C:아래 원하는 디렉토리에 오라클과 똑같은 디비를 사전에 만들어 놓아야 합니다.
2.그러구 코딩시 일일이 아래처럼 필드명을 적어주고 파라미터를 주어야 합니다.
3.디비가 한두개이면 저렇게 코딩 해주어도 별 문제이나 불행히도 오라클디비의 테이블
수는 프로젝트하나에 약 30여개 입니다. 그러면 아래구문을 30번 이나 써 주어야
합니다. 무식한 방법이죠?
4.행여 오라클디비의 필드명을 수정이라도 하면 백업프로그램도 똑같이 수정 해 주어야
합니다. 어이구 단점투성이네...
그래서 만들다가 보다 고차원적인 방법을 찾으려 중단 상태입니다.
아래는 소스입니다.
//백업을 주기적으로 하므로 기존 데이타는 삭제를 합니다
with SQLtra do begin
close;
sql.clear;
sql.add('delete from testdb');
EXECsql;
end;
with SQLtest do begin
close;
sql.clear;
sql.add('select * from testdb');
SQL.Add('where mj_suno is not null');
open;
ProgressBar1.max := recordcount;
while not eof do begin
ProgressBar1.Position := ProgressBar1.Position + sizeof(1);
with SQLtest2 do begin
close;
sql.clear;
sql.add('Insert into testdb');
sql.add('(ms_keys,ms_sply,ms_saup,ms_name,ms_juso1,ms_juso2,ms_phon,ms_faxi,');
sql.add(' ms_post,ms_upte,ms_jong,ms_gydt,ms_stdt,ms_endt,ms_jigb,ms_bnk1,ms_rat1,ms_bnk2,');
sql.add(' ms_rat2,ms_bnk3,ms_rat3,ms_dday,ms_desc,ms_chek,ms_segm,ms_kubn)');
sql.Add('Values');
sql.add('(:p_keys,:p_sply,:p_saup,:p_name,:p_juso1,:p_juso2,:p_phon,:p_faxi,');
sql.add(' :p_post,:p_upte,:p_jong,:p_gydt,:p_stdt,:p_endt,:p_jigb,:p_bnk1,:p_rat1,:p_bnk2,');
sql.add(' :p_rat2,:p_bnk3,:p_rat3,:p_dday,:p_desc,:p_chek,:p_segm,:p_kubn)');
parambyname('p_keys').asstring := SQLtraffic.fieldbyname('ms_keys').asstring;
parambyname('p_sply').asstring := SQLtraffic.fieldbyname('ms_sply').asstring;
parambyname('p_kubn').asstring := SQLtraffic.fieldbyname('ms_kubn').asstring;
parambyname('p_saup').asstring := SQLtraffic.fieldbyname('ms_saup').asstring;
parambyname('p_name').asstring := SQLtraffic.fieldbyname('ms_name').asstring;
parambyname('p_juso1').asstring :=SQLtraffic.fieldbyname('ms_juso1').asstring;
parambyname('p_juso2').asstring :=SQLtraffic.fieldbyname('ms_juso2').asstring;
parambyname('p_phon').asstring := SQLtraffic.fieldbyname('ms_phon').asstring;
parambyname('p_faxi').asstring := SQLtraffic.fieldbyname('ms_faxi').asstring;
parambyname('p_post').asstring := SQLtraffic.fieldbyname('ms_post').asstring;
parambyname('p_upte').asstring := SQLtraffic.fieldbyname('ms_upte').asstring;
parambyname('p_jong').asstring := SQLtraffic.fieldbyname('ms_jong').asstring;
parambyname('p_gydt').asstring := SQLtraffic.fieldbyname('ms_gydt').asstring;
parambyname('p_stdt').asstring := SQLtraffic.fieldbyname('ms_stdt').asstring;
parambyname('p_endt').asstring := SQLtraffic.fieldbyname('ms_endt').asstring;
parambyname('p_jigb').asstring := SQLtraffic.fieldbyname('ms_jigb').asstring;
parambyname('p_bnk1').asstring := SQLtraffic.fieldbyname('ms_bnk1').asstring;
parambyname('p_rat1').asstring := SQLtraffic.fieldbyname('ms_rat1').asstring;
parambyname('p_bnk2').asstring := SQLtraffic.fieldbyname('ms_bnk2').asstring;
parambyname('p_rat2').asstring := SQLtraffic.fieldbyname('ms_rat2').asstring;
parambyname('p_bnk3').asstring := SQLtraffic.fieldbyname('ms_bnk3').asstring;
parambyname('p_rat3').asstring := SQLtraffic.fieldbyname('ms_rat3').asstring;
parambyname('p_dday').asstring := SQLtraffic.fieldbyname('ms_dday').asstring;
parambyname('p_desc').asstring := SQLtraffic.fieldbyname('ms_desc').asstring;
parambyname('p_chek').asstring := SQLtraffic.fieldbyname('ms_chek').asstring;
parambyname('p_segm').asstring := SQLtraffic.fieldbyname('ms_segm').asstring;
EXECSQL;
end;
Next;
end;
end;
제가 구현하고 싶은 방법은요
1. C:아래에도 오라클디비와 똑같이 파라독스 디비를 사전에 만들지 않고...
2. 위구문처럼 필드명을 일일이 적어주지 않고, 파라미터도 일일이 적어주지않고...
그러면 오라클디비를 수정해도 백업프로그램은 수정하지 않아도 되겠죠..
고수님들 새로운 고차원적인 기법좀 알려주십시요... 감사합니다.
UpdateSQL 콤포넌트를 써보심이 어떠하신지...^^;;
그럼...즐코되세욤...
초보 wrote:
> 저의 방법 입니다.
> 아주 기초적인 방법일 것인데... 보다 고차원 적인 기법이 있으면 알려주십시요.
>
> 단점이 아주 많습니다.
> 1.C:아래 원하는 디렉토리에 오라클과 똑같은 디비를 사전에 만들어 놓아야 합니다.
> 2.그러구 코딩시 일일이 아래처럼 필드명을 적어주고 파라미터를 주어야 합니다.
> 3.디비가 한두개이면 저렇게 코딩 해주어도 별 문제이나 불행히도 오라클디비의 테이블
> 수는 프로젝트하나에 약 30여개 입니다. 그러면 아래구문을 30번 이나 써 주어야
> 합니다. 무식한 방법이죠?
> 4.행여 오라클디비의 필드명을 수정이라도 하면 백업프로그램도 똑같이 수정 해 주어야
> 합니다. 어이구 단점투성이네...
>
> 그래서 만들다가 보다 고차원적인 방법을 찾으려 중단 상태입니다.
>
> 아래는 소스입니다.
>
>
> //백업을 주기적으로 하므로 기존 데이타는 삭제를 합니다
> with SQLtra do begin
> close;
> sql.clear;
> sql.add('delete from testdb');
> EXECsql;
> end;
>
> with SQLtest do begin
> close;
> sql.clear;
> sql.add('select * from testdb');
> SQL.Add('where mj_suno is not null');
> open;
> ProgressBar1.max := recordcount;
> while not eof do begin
> ProgressBar1.Position := ProgressBar1.Position + sizeof(1);
> with SQLtest2 do begin
> close;
> sql.clear;
> sql.add('Insert into testdb');
> sql.add('(ms_keys,ms_sply,ms_saup,ms_name,ms_juso1,ms_juso2,ms_phon,ms_faxi,');
> sql.add(' ms_post,ms_upte,ms_jong,ms_gydt,ms_stdt,ms_endt,ms_jigb,ms_bnk1,ms_rat1,ms_bnk2,');
> sql.add(' ms_rat2,ms_bnk3,ms_rat3,ms_dday,ms_desc,ms_chek,ms_segm,ms_kubn)');
> sql.Add('Values');
> sql.add('(:p_keys,:p_sply,:p_saup,:p_name,:p_juso1,:p_juso2,:p_phon,:p_faxi,');
> sql.add(' :p_post,:p_upte,:p_jong,:p_gydt,:p_stdt,:p_endt,:p_jigb,:p_bnk1,:p_rat1,:p_bnk2,');
> sql.add(' :p_rat2,:p_bnk3,:p_rat3,:p_dday,:p_desc,:p_chek,:p_segm,:p_kubn)');
> parambyname('p_keys').asstring := SQLtraffic.fieldbyname('ms_keys').asstring;
> parambyname('p_sply').asstring := SQLtraffic.fieldbyname('ms_sply').asstring;
> parambyname('p_kubn').asstring := SQLtraffic.fieldbyname('ms_kubn').asstring;
> parambyname('p_saup').asstring := SQLtraffic.fieldbyname('ms_saup').asstring;
> parambyname('p_name').asstring := SQLtraffic.fieldbyname('ms_name').asstring;
> parambyname('p_juso1').asstring :=SQLtraffic.fieldbyname('ms_juso1').asstring;
> parambyname('p_juso2').asstring :=SQLtraffic.fieldbyname('ms_juso2').asstring;
> parambyname('p_phon').asstring := SQLtraffic.fieldbyname('ms_phon').asstring;
> parambyname('p_faxi').asstring := SQLtraffic.fieldbyname('ms_faxi').asstring;
> parambyname('p_post').asstring := SQLtraffic.fieldbyname('ms_post').asstring;
> parambyname('p_upte').asstring := SQLtraffic.fieldbyname('ms_upte').asstring;
> parambyname('p_jong').asstring := SQLtraffic.fieldbyname('ms_jong').asstring;
> parambyname('p_gydt').asstring := SQLtraffic.fieldbyname('ms_gydt').asstring;
> parambyname('p_stdt').asstring := SQLtraffic.fieldbyname('ms_stdt').asstring;
> parambyname('p_endt').asstring := SQLtraffic.fieldbyname('ms_endt').asstring;
> parambyname('p_jigb').asstring := SQLtraffic.fieldbyname('ms_jigb').asstring;
> parambyname('p_bnk1').asstring := SQLtraffic.fieldbyname('ms_bnk1').asstring;
> parambyname('p_rat1').asstring := SQLtraffic.fieldbyname('ms_rat1').asstring;
> parambyname('p_bnk2').asstring := SQLtraffic.fieldbyname('ms_bnk2').asstring;
> parambyname('p_rat2').asstring := SQLtraffic.fieldbyname('ms_rat2').asstring;
> parambyname('p_bnk3').asstring := SQLtraffic.fieldbyname('ms_bnk3').asstring;
> parambyname('p_rat3').asstring := SQLtraffic.fieldbyname('ms_rat3').asstring;
> parambyname('p_dday').asstring := SQLtraffic.fieldbyname('ms_dday').asstring;
> parambyname('p_desc').asstring := SQLtraffic.fieldbyname('ms_desc').asstring;
> parambyname('p_chek').asstring := SQLtraffic.fieldbyname('ms_chek').asstring;
> parambyname('p_segm').asstring := SQLtraffic.fieldbyname('ms_segm').asstring;
> EXECSQL;
> end;
> Next;
> end;
> end;
>
> 제가 구현하고 싶은 방법은요
> 1. C:아래에도 오라클디비와 똑같이 파라독스 디비를 사전에 만들지 않고...
> 2. 위구문처럼 필드명을 일일이 적어주지 않고, 파라미터도 일일이 적어주지않고...
> 그러면 오라클디비를 수정해도 백업프로그램은 수정하지 않아도 되겠죠..
>
> 고수님들 새로운 고차원적인 기법좀 알려주십시요... 감사합니다.