Q&A

  • "s6763" 님 고맙습니다. 저가 해석력 이 부족해서 동적 테이블에서 테이블 생
[질문]"s6763" 님 고맙습니다.

저가 해석력 이 부족해서 동적 테이블에서 테이블 생성에서 테이블 생성후 필드만 증감하는 법을 알고 싶습니다



s6763 님 가르쳐준 방법이 이해가 안가서

송구스럽게도 다시한번 이렇게 글을 올립니다.



아래의 소스를 참고하셔서 가르쳐 주시면 감사 감사;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



////자동즐가 필드 만들기 소스



procedure TF_varim.BitB_tc5Click(Sender: TObject);

var

Tablename:string; a,i,count:Integer;

Itemlist: TStringList;



begin



//------------------------------------------------------------------------------//

//------------------------------------------------------------------------------//

with Dm.Q_basepay do

begin

close; //다른 테이블으 레코드 수를 체크하느 루틴

sql.Clear;

sql.add('select var_div from pyvarim');

sql.add('where var_div="E"');

active:=true;

end;



a := Dm.Q_basepay.RecordCounT;



With Dm.T_ptaxm do begin // 테이블의 존재 유무를 검사

Itemlist:=TStringList.Create;

Session.GetTableNames('Pay2000','',False,False,ItemList);

If Itemlist.IndexOf(Tablename)>=0 then

Begin

Itemlist.free;

exit;

end;

Itemlist.free;



Close;

Tablename:='pyptaxm';

Tabletype:=ttParadox;



with FieldDefs do begin

clear;

Add('Ptax_suppdiv',ftString,1,False); //지급구분

Add('Ptax_suppym',ftInteger,0,False); //지급년도

Add('Ptax_codenum',ftString,8,False); //사원번호

//테이블 안의 필드를 위 의 다른 테이블 레코드 수만큼 증가시킨다

// 이때 다른 테이블의 레코드 즉 자료의 수가 변동이 있을때 문제임

// 기존자료는 보존하고 새로운 필드만 추가해야함

FOR i := 1 TO a do

begin

Add('ptax_comm'+INTTOSTR(i),ftFloat,0,True); //공제항목

end;

end;



with IndexDefs do

begin

clear; //필드정의 각각

Add('Field1Index','Ptax_suppdiv;Ptax_suppym;Ptax_codenum',[ixPrimary,ixUnique]); //필드의 인덱스 정의

end;

CreateTable;

open;

end;



//위에서 정의된 필드의 디비그리드의 칼럼의 내용 이름 필등명 색등을 정의한다

>

> 소스는 ========================================================

> new_column := DG_Temp.columns.Add; //부서적요 field

> new_column.FieldName := 'jukyo';

> new_column.Color := cl3DLight;

> New_column.AlwaysShowEditButton := True;

> New_column.EndEllipsis := True;

> New_column.ButtonStyle := cbsEllipsis;

> ===============================================================

>





아래와 같이 Clear를 사용해 보세요.

with DBGrid1 do begin

Columns.BeginUpdate;

Columns.Clear;

Columns.Add;

Columns[0].FieldName := 'First';

Columns[0].Title.Caption := '첫번째필드';

Columns[0].Width := 130;

Columns[0].Color := $00D0FFFF;

Columns.Add;

Columns[1].FieldName := 'First';

Columns[1].Title.Caption := '두번째필드';

Columns[1].Width := 130;

Columns[1].Color := $00D0FFFF;



추가하고픈 만큼 추가...



Columns.EndUpdate;

end;

>

> 디비그리드에 생성되어있는 모든 컬럼을 동적으로 삭제하는 방법을 알려주세여.....

end;





*****************************문제는 여기서입니다

증가된 파일을 체크후 증감하여야 합니ㅏㄷ.



제목: Re: [Q]동적 테이블 생성에서 테이블은 그대로 두고 필드수만 증가하는 법



+ 새로운 글입니다.

--------------------------------------------------------------------------------쿼리문으로 하세요.procedure change_field;

var s: string;

begin

s:='alter table kkk.db drop field1, add field2 char(30)';

with query1 do begin

close;

sql.clear;

sql.add(s);

execSQL;

end;

end; 이전:



2  COMMENTS
  • Profile
    s6763 2000.11.24 08:28
    배경 wrote:

    > [질문]"s6763" 님 고맙습니다.

    > 저가 해석력 이 부족해서 동적 테이블에서 테이블 생성에서 테이블 생성후 필드만 증감하는 법을 알고 싶습니다

    >

    > s6763 님 가르쳐준 방법이 이해가 안가서

    > 송구스럽게도 다시한번 이렇게 글을 올립니다.

    >

    > 아래의 소스를 참고하셔서 가르쳐 주시면 감사 감사;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    >

    > ////자동즐가 필드 만들기 소스

    >

    > procedure TF_varim.BitB_tc5Click(Sender: TObject);

    > var

    > Tablename:string; a,i,count:Integer;

    > Itemlist: TStringList;

    >

    > begin

    >

    > //------------------------------------------------------------------------------//

    > //------------------------------------------------------------------------------//

    > with Dm.Q_basepay do

    > begin

    > close; //다른 테이블으 레코드 수를 체크하느 루틴

    > sql.Clear;

    > sql.add('select var_div from pyvarim');

    > sql.add('where var_div="E"');

    > active:=true;

    > end;

    >

    > a := Dm.Q_basepay.RecordCounT;

    >

    > With Dm.T_ptaxm do begin // 테이블의 존재 유무를 검사

    > Itemlist:=TStringList.Create;

    > Session.GetTableNames('Pay2000','',False,False,ItemList);

    > If Itemlist.IndexOf(Tablename)>=0 then

    > Begin

    > Itemlist.free;

    > exit;

    > end;

    > Itemlist.free;

    >

    > Close;

    > Tablename:='pyptaxm';

    > Tabletype:=ttParadox;

    >

    > with FieldDefs do begin

    > clear;

    > Add('Ptax_suppdiv',ftString,1,False); //지급구분

    > Add('Ptax_suppym',ftInteger,0,False); //지급년도

    > Add('Ptax_codenum',ftString,8,False); //사원번호

    > //테이블 안의 필드를 위 의 다른 테이블 레코드 수만큼 증가시킨다

    > // 이때 다른 테이블의 레코드 즉 자료의 수가 변동이 있을때 문제임

    > // 기존자료는 보존하고 새로운 필드만 추가해야함

    > FOR i := 1 TO a do

    > begin

    > Add('ptax_comm'+INTTOSTR(i),ftFloat,0,True); //공제항목

    > end;

    > end;

    >

    > with IndexDefs do

    > begin

    > clear; //필드정의 각각

    > Add('Field1Index','Ptax_suppdiv;Ptax_suppym;Ptax_codenum',[ixPrimary,ixUnique]); //필드의 인덱스 정의

    > end;

    > CreateTable;

    > open;

    > end;

    >

    > //위에서 정의된 필드의 디비그리드의 칼럼의 내용 이름 필등명 색등을 정의한다

    > >

    > > 소스는 ========================================================

    > > new_column := DG_Temp.columns.Add; //부서적요 field

    > > new_column.FieldName := 'jukyo';

    > > new_column.Color := cl3DLight;

    > > New_column.AlwaysShowEditButton := True;

    > > New_column.EndEllipsis := True;

    > > New_column.ButtonStyle := cbsEllipsis;

    > > ===============================================================

    > >

    >

    >

    > 아래와 같이 Clear를 사용해 보세요.

    > with DBGrid1 do begin

    > Columns.BeginUpdate;

    > Columns.Clear;

    > Columns.Add;

    > Columns[0].FieldName := 'First';

    > Columns[0].Title.Caption := '첫번째필드';

    > Columns[0].Width := 130;

    > Columns[0].Color := $00D0FFFF;

    > Columns.Add;

    > Columns[1].FieldName := 'First';

    > Columns[1].Title.Caption := '두번째필드';

    > Columns[1].Width := 130;

    > Columns[1].Color := $00D0FFFF;

    >

    > 추가하고픈 만큼 추가...

    >

    > Columns.EndUpdate;

    > end;

    > >

    > > 디비그리드에 생성되어있는 모든 컬럼을 동적으로 삭제하는 방법을 알려주세여.....

    > end;

    >

    >

    > *****************************문제는 여기서입니다

    > 증가된 파일을 체크후 증감하여야 합니ㅏㄷ.

    >

    > 제목: Re: [Q]동적 테이블 생성에서 테이블은 그대로 두고 필드수만 증가하는 법

    >

    > + 새로운 글입니다.

    > --------------------------------------------------------------------------------쿼리문으로 하세요.procedure change_field;

    > var s: string;

    > begin

    > s:='alter table kkk.db drop field1, add field2 char(30)';

    > with query1 do begin

    > close;

    > sql.clear;

    > sql.add(s);

    > execSQL;

    > end;

    > end; 이전:

    >

  • Profile
    배경 2000.11.25 03:06
    s6763 wrote:

    > 배경 wrote:

    > > [질문]"s6763" 님 고맙습니다.

    > > 저가 해석력 이 부족해서 동적 테이블에서 테이블 생성에서 테이블 생성후 필드만 증감하는 법을 알고 싶습니다

    > >

    > > s6763 님 가르쳐준 방법이 이해가 안가서

    > > 송구스럽게도 다시한번 이렇게 글을 올립니다.

    > >

    > > 아래의 소스를 참고하셔서 가르쳐 주시면 감사 감사;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

    > >

    > > ////자동즐가 필드 만들기 소스

    > >

    > > procedure TF_varim.BitB_tc5Click(Sender: TObject);

    > > var

    > > Tablename:string; a,i,count:Integer;

    > > Itemlist: TStringList;

    > >

    > > begin

    > >

    > > //------------------------------------------------------------------------------//

    > > //------------------------------------------------------------------------------//

    > > with Dm.Q_basepay do

    > > begin

    > > close; //다른 테이블으 레코드 수를 체크하느 루틴

    > > sql.Clear;

    > > sql.add('select var_div from pyvarim');

    > > sql.add('where var_div="E"');

    > > active:=true;

    > > end;

    > >

    > > a := Dm.Q_basepay.RecordCounT;

    > >

    > > With Dm.T_ptaxm do begin // 테이블의 존재 유무를 검사

    > > Itemlist:=TStringList.Create;

    > > Session.GetTableNames('Pay2000','',False,False,ItemList);

    > > If Itemlist.IndexOf(Tablename)>=0 then

    > > Begin

    > > Itemlist.free;

    > > exit;

    > > end;

    > > Itemlist.free;

    > >

    > > Close;

    > > Tablename:='pyptaxm';

    > > Tabletype:=ttParadox;

    > >

    > > with FieldDefs do begin

    > > clear;

    > > Add('Ptax_suppdiv',ftString,1,False); //지급구분

    > > Add('Ptax_suppym',ftInteger,0,False); //지급년도

    > > Add('Ptax_codenum',ftString,8,False); //사원번호

    > > //테이블 안의 필드를 위 의 다른 테이블 레코드 수만큼 증가시킨다

    > > // 이때 다른 테이블의 레코드 즉 자료의 수가 변동이 있을때 문제임

    > > // 기존자료는 보존하고 새로운 필드만 추가해야함

    > > FOR i := 1 TO a do

    > > begin

    > > Add('ptax_comm'+INTTOSTR(i),ftFloat,0,True); //공제항목

    > > end;

    > > end;

    > >

    > > with IndexDefs do

    > > begin

    > > clear; //필드정의 각각

    > > Add('Field1Index','Ptax_suppdiv;Ptax_suppym;Ptax_codenum',[ixPrimary,ixUnique]); //필드의 인덱스 정의

    > > end;

    > > CreateTable;

    > > open;

    > > end;

    > >

    > > //위에서 정의된 필드의 디비그리드의 칼럼의 내용 이름 필등명 색등을 정의한다

    > > >

    > > > 소스는 ========================================================

    > > > new_column := DG_Temp.columns.Add; //부서적요 field

    > > > new_column.FieldName := 'jukyo';

    > > > new_column.Color := cl3DLight;

    > > > New_column.AlwaysShowEditButton := True;

    > > > New_column.EndEllipsis := True;

    > > > New_column.ButtonStyle := cbsEllipsis;

    > > > ===============================================================

    > > >

    > >

    > >

    > > 아래와 같이 Clear를 사용해 보세요.

    > > with DBGrid1 do begin

    > > Columns.BeginUpdate;

    > > Columns.Clear;

    > > Columns.Add;

    > > Columns[0].FieldName := 'First';

    > > Columns[0].Title.Caption := '첫번째필드';

    > > Columns[0].Width := 130;

    > > Columns[0].Color := $00D0FFFF;

    > > Columns.Add;

    > > Columns[1].FieldName := 'First';

    > > Columns[1].Title.Caption := '두번째필드';

    > > Columns[1].Width := 130;

    > > Columns[1].Color := $00D0FFFF;

    > >

    > > 추가하고픈 만큼 추가...

    > >

    > > Columns.EndUpdate;

    > > end;

    > >

    > >

    먼저 이렇게 답변해주셔서 감사하다는 인사면저

    꾸벅



    감사감사감사======



    다름이 아니옵고



    1번 테이블과 2번 테이블이 있습니다.

    그건데 2번테이블 생성시 1번 테이블의 레코드 수만큼의 필드를 생성하고

    1번 레코드에서 자료형을 체크하여 자료형대로 체크후

    2번 테이블의 필드를 1번 테이블 레코드의 자료대료 그 형태만크 자료를 생성하고

    디비그리드에 자료이름을 이동시킵니다.

    그리고 2번 테이블 생성시 테이블이 존재 하는 지 안하는 지도 검사후

    2번 테이블이 존재하지 않을때만 2번 테이블을 생성합니다.

    거기까지의 소스가 위의 내용입니다

    소스를 참고 하시면 감사 감사=================





    ****그런데 문제는 다름이 아니오라------===============

    1번 테이블이 변동시 항상 체크하여 1번 테이블의 자료수 자료형만큼

    2번테이블의 필드가 1번 테이블의 정보즉 자료에 따라 증감 하여야 합니다.

    이것을 해결할 방법을 부탁



    그리고 컴포넌트 의 환경설정이 아닌 델파이 코딩 수작업으로

    룩업을 하는 방법을 아시는지 가능하다면 ====

    잘 부탁 드립다