Q&A

  • 1박 2일째 고생중입니다 소스도올렷습니다
삭제시 마스터의 tblhunh 테이블은 삭제가 되는데 디테일의 tbladdr은삭제가 않도ㅐ거든요

제발 고수님들의 조언좀?



procedure TFDATA0101.BtnDeleteClick(Sender: TObject);

var

ino : String;

imsg : integer ;

begin

imsg := ApplicaTion.MessageBox('확실히 삭제할까요?.','데이타삭제' , MB_OKCANCEL);

if imsg = IDOK then

begin

TblAddr.IndexFieldNames := 'ANO;AGU;ASEQ';

TblAddr.Active := True;

ino := Trim(DeHno.Text);//ANO필드

TblAddr.CachedUpdates := False;

while not Tbladdr.FindKey([ino]) do

begin

TblAddr.Delete;/디테일

end;

Tblhunh.Delete;//마스터

TblAddr.CachedUpdates := True;

Tbladdr.Filtered := true;

end;

end;

2  COMMENTS
  • Profile
    김범석 2000.06.24 20:51
    DELETE cascade 옵션을 사용해 보세요



    db에서 주는 옵션인데 ALTER 명령으로도 가능합니다



    마스타가 삭제 되면 그에 해당하는 레코드의 포린키를
  • Profile
    송기원 2000.05.16 23:57
    황남철 wrote:

    > 삭제시 마스터의 tblhunh 테이블은 삭제가 되는데 디테일의 tbladdr은삭제가 않도ㅐ거든요

    > 제발 고수님들의 조언좀?

    >

    > procedure TFDATA0101.BtnDeleteClick(Sender: TObject);

    > var

    > ino : String;

    > imsg : integer ;

    > begin

    > imsg := ApplicaTion.MessageBox('확실히 삭제할까요?.','데이타삭제' , MB_OKCANCEL);

    > if imsg = IDOK then

    > begin

    > TblAddr.IndexFieldNames := 'ANO;AGU;ASEQ';

    > TblAddr.Active := True;

    > ino := Trim(DeHno.Text);//ANO필드

    > TblAddr.CachedUpdates := False;

    > while not Tbladdr.FindKey([ino]) do

    > begin

    > TblAddr.Delete;/디테일

    > end;

    > Tblhunh.Delete;//마스터

    > TblAddr.CachedUpdates := True;

    > Tbladdr.Filtered := true;

    > end;

    > end;



    while not Tbladdr.FindKey([ino]) do

    begin

    TblAddr.Delete;/디테일

    end;

    이부분을

    if Tbladdr.FindKey([ino]) then

    TblAddr.Delete;/디테일

    이렇게 하는것 아닌간요....마스터-디테일의 키가 ino필드로 매칭된것 같은데...

    질문의 요지에 적절한 답인지 ..^^



    참고로 gotokey, findkey로 레코드를 찾을때에는 반드시 인덱스가

    해당 필드로 지정되어야 할 것 같네요..

    그것이 귀챦으시다면...locate함수를 사용해보심도..