Q&A

  • Table에관한 재질문입니다.


>박성훈님 감사드립다.

주신답변을 다시수정했습니다

그런데

key violation 에라메세지가 뜨더러고요



table1과 table2 에서 없는 레코드를 추가해야하는데

> while 문이 없이는 되거든요

> 그런데 while 안에서는 안되고있어요

>

> Table1.Active := true;

> Table1.First ;

>

> while (not Table1.Eof) do

> begin

>

> j:= Table1.fieldvalues['회원코드'] ;

> label9.caption:=j;

>

>

> if (not Table2.Locate('회원코드',j,[])) then

> begin

>

> Table2.Append ;

> Table2.fieldvalues['회원코드'] := Table1.Fieldvalues['회원코드'];

> Table2.fieldvalues['성명'] := Table1.fieldvalues['회원명'];

> Table2.fieldvalues['소속'] := Table1.fieldvalues['소속'];

>

> Table2.post;





> end ;

>

> Table1.next ;

>

> end;

>



2  COMMENTS
  • Profile
    박성훈 2000.02.18 05:58
    Table2 회원코드 필드가 Primary key로 설정되었다면 Key Violation을 체크하는 코드를

    집어넣으셔야 될 것 같은데요.

    아래의 소스에서 Table2.Locate 대신 Table2.FindKey([j])를 사용하시면 확실하게

    Key 체크가 될 것 되걸 같군요.



    with Table2 do

    begin

    if not FindKey([j]) then

    //추가코드

    else

    ShowMessage('회원코드가 중복되었습니다!');

    end;



    본희 wrote:

    >

    > >박성훈님 감사드립다.

    > 주신답변을 다시수정했습니다

    > 그런데

    > key violation 에라메세지가 뜨더러고요

    >

    > table1과 table2 에서 없는 레코드를 추가해야하는데

    > > while 문이 없이는 되거든요

    > > 그런데 while 안에서는 안되고있어요

    > >

    > > Table1.Active := true;

    > > Table1.First ;

    > >

    > > while (not Table1.Eof) do

    > > begin

    > >

    > > j:= Table1.fieldvalues['회원코드'] ;

    > > label9.caption:=j;

    > >

    > >

    > > if (not Table2.Locate('회원코드',j,[])) then

    > > begin

    > >

    > > Table2.Append ;

    > > Table2.fieldvalues['회원코드'] := Table1.Fieldvalues['회원코드'];

    > > Table2.fieldvalues['성명'] := Table1.fieldvalues['회원명'];

    > > Table2.fieldvalues['소속'] := Table1.fieldvalues['소속'];

    > >

    > > Table2.post;

    >

    >

    > > end ;

    > >

    > > Table1.next ;

    > >

    > > end;

    > >

    >

  • Profile
    강인규 2000.02.18 04:08
    혹시 프라이머리키가 테이블1에 회원번호만이 아니여서 회원번호가 2개이상 존재하는게 아닌가 합니다. 물론 이는 테이블2가 프라이머리키가 하나라는 가정하지만요.

    제가 비슷하게 프로그램을 돌려본 결과 별 이상 없는 코딩이네요. 테이블을 살펴보심이 좋을듯합니다.



    본희 wrote:

    >

    > >박성훈님 감사드립다.

    > 주신답변을 다시수정했습니다

    > 그런데

    > key violation 에라메세지가 뜨더러고요

    >

    > table1과 table2 에서 없는 레코드를 추가해야하는데

    > > while 문이 없이는 되거든요

    > > 그런데 while 안에서는 안되고있어요

    > >

    > > Table1.Active := true;

    > > Table1.First ;

    > >

    > > while (not Table1.Eof) do

    > > begin

    > >

    > > j:= Table1.fieldvalues['회원코드'] ;

    > > label9.caption:=j;

    > >

    > >

    > > if (not Table2.Locate('회원코드',j,[])) then

    > > begin

    > >

    > > Table2.Append ;

    > > Table2.fieldvalues['회원코드'] := Table1.Fieldvalues['회원코드'];

    > > Table2.fieldvalues['성명'] := Table1.fieldvalues['회원명'];

    > > Table2.fieldvalues['소속'] := Table1.fieldvalues['소속'];

    > >

    > > Table2.post;

    >

    >

    > > end ;

    > >

    > > Table1.next ;

    > >

    > > end;

    > >

    >