지금 맡은 업무가 오라클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;
>
> 지금 맡은 업무가 오라클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;