Q&A

  • 서버에 있는 오라클db를 로칼db(파라독스)로..(급합니다)


지금 맡은 업무가 오라클db를 로칼db로 가져오는것인데 잘 모르겠네요..



(일단 폼이 생성될때 오라클 db에 있는 테이블을 읽어들여 콤보박스에 필드가

나타납니다..여기까지는 구현했구요..



이때 콤보박스에 있는 필드를 선택하면 그 선택된 필드와 관련된 레코드가

로컬db로 옮겨지는 일입니다......

여기서부터 막히네요...테이블을 미리 만들어 놓고 데이타를 인서트시켜야 하는지

테이블을 동적으로 생성하면서 인서트시켜야 하는지요...

sql을 잘 못씁니다....자세하게 설명해주시면 고맙겠습니다..

만약 테이블을 미리 만들어 놨을때 어떻게 insert 시키는지

동적일때는 어떻게 insert시키는지 sql문을 알고 싶습니다..

일단 제가 짠 소스입니다..



procedure Tplanview.FormCreate(Sender: TObject);

begin

//1

with Query1 Do

begin

Close;

Sql.Clear;

Sql.Add ( 'select distinct plan_name from zpsi_plan');

Open;

First;

zpsiplan.Clear;

zpsiplan.Items.Add('*');

While Not EOF do

begin

zpsiplan.Items.Add(Trim(FieldByName('plan_name').Asstring));

Next;

end;

zpsiplan.ItemIndex := 0;

end;

procedure Tplanview.BitBtn1Click(Sender: TObject);

var PLAN_NAME, ITEM_NAME : string;

begin

with Query1 do

begin

close;

sql.clear;

sql.add( ' select PLAN_NAME, ITEM_NAME ') ;

sql.add( ' from zpsi_plan') ;

if (trim(zpsiplan.text) <> '*') and (trim(zpsiplan.text) <> '') then

Sql.Add ( ' and plan_name = :plan_name ');

open;

if recordcount = 0 then

showmessage('no data');

exit;

end;



1  COMMENTS
  • Profile
    shinnine 2000.01.08 18:53
    uami wrote:

    >

    > 지금 맡은 업무가 오라클db를 로칼db로 가져오는것인데 잘 모르겠네요..

    >

    > (일단 폼이 생성될때 오라클 db에 있는 테이블을 읽어들여 콤보박스에 필드가

    > 나타납니다..여기까지는 구현했구요..

    >

    > 이때 콤보박스에 있는 필드를 선택하면 그 선택된 필드와 관련된 레코드가

    > 로컬db로 옮겨지는 일입니다......

    > 여기서부터 막히네요...테이블을 미리 만들어 놓고 데이타를 인서트시켜야 하는지

    > 테이블을 동적으로 생성하면서 인서트시켜야 하는지요...

    > sql을 잘 못씁니다....자세하게 설명해주시면 고맙겠습니다..

    > 만약 테이블을 미리 만들어 놨을때 어떻게 insert 시키는지

    > 동적일때는 어떻게 insert시키는지 sql문을 알고 싶습니다..

    > 일단 제가 짠 소스입니다..

    >

    > procedure Tplanview.FormCreate(Sender: TObject);

    > begin

    > //1

    > with Query1 Do

    > begin

    > Close;

    > Sql.Clear;

    > Sql.Add ( 'select distinct plan_name from zpsi_plan');

    > Open;

    > First;

    > zpsiplan.Clear;

    > zpsiplan.Items.Add('*');

    > While Not EOF do

    > begin

    > zpsiplan.Items.Add(Trim(FieldByName('plan_name').Asstring));

    > Next;

    > end;

    > zpsiplan.ItemIndex := 0;

    > end;

    > procedure Tplanview.BitBtn1Click(Sender: TObject);

    > var PLAN_NAME, ITEM_NAME : string;

    > begin

    > with Query1 do

    > begin

    > close;

    > sql.clear;

    > sql.add( ' select PLAN_NAME, ITEM_NAME ') ;

    > sql.add( ' from zpsi_plan') ;

    > if (trim(zpsiplan.text) <> '*') and (trim(zpsiplan.text) <> '') then

    > Sql.Add ( ' and plan_name = :plan_name ');

    > open;

    > if recordcount = 0 then

    > showmessage('no data');

    > exit;

    > end;

    >



    > 안녕하세요..

    먼저 오라클로 연결된 Query1와 로컬 DB와 연결된 Query2 가있어야 합니다.

    아니면 Query1을 동적으로 DataBaseName을 바꿔 주셔야하지요..

    > 위에서 Combo Box 에서 선택한 자료를 오라클에서 SELECT문으로 찾았다면...

    >

    > Query2.Sql.Clear;

    > Query2.Add('CREATE TABLE TMP_LOCAL'

    + '(L_PLAN_NAME CHAR(8),'

    + 'L_ITEM_NAME CHAR(8))');

    try

    Query2.ExecSQL;

    except

    showmessage('이미 만들어진Table입니다');

    end;

    Query2.Sql.Clear; // 이것은 로컬 DB와 연결된 컴포넌트 입니다..

    Query2.Sql.Add('INSERT INTO TMP_LOCAL(L_PLAN_NAME,L_ITEM_NAME)'

    + 'VALUES(''' + Query1.FieldByName('PLAN_NAME').AsString + ''',''' + Query1.FieldByName('ITEM_NAME').AsString + ''')');

    Query2.ExecSQL;

    > 이렇게 하면 Query1에서의 결과를 Local DB에 INSERT한 결과가 되것 같네요..

    > open;