Q&A

  • insert하는데 100 개중에 50개의 data만 insert되는데 어케된거죠?


StringGrid에 있는 내용을 table에 insert하려고 합니다. 그런데

총100개의 Data인데 50개만 insert되고 error가 발생합니다.

뭐가 잘 못된거줘???



(에러메시지 : key violation)



--------------------------------코딩부분

with query1 do begin

Active:=False;

Close;

SQL.clear();

SQL.Add(' Insert into "BOBG.DB"(Division,DutyNumber,Amount)');

SQL.Add(' Values (:Division,:DutyNumber,:Amount)');



For Count:= 1 to 100 do begin

paramByName('Division').AsSmallInt:=1;

paramByName('DutyNumber').AsSmallInt:=

strtoint(StringGrid1.Cells[0,Count]);

paramByName('Amount').AsInteger:=

strtoint(StringGrid1.Cells[1,Count]);

EXecSQL;

end;



2  COMMENTS
  • Profile
    최석기 2001.02.07 20:01
    key Violation이ㅏ 발생하는 경우는 제 경우에는 프라이머리 키로 잡혀 있는 필드에 중복 된 값을 삽입했을 경우에 발생 하던데요..



    혹시 중복키 허용이 않되는 인덱스에 중복키를 삽입한 것이 아닌가요?



    hyo wrote:

    >

    > StringGrid에 있는 내용을 table에 insert하려고 합니다. 그런데

    > 총100개의 Data인데 50개만 insert되고 error가 발생합니다.

    > 뭐가 잘 못된거줘???

    >

    > (에러메시지 : key violation)

    >

    > --------------------------------코딩부분

    > with query1 do begin

    > Active:=False;

    > Close;

    > SQL.clear();

    > SQL.Add(' Insert into "BOBG.DB"(Division,DutyNumber,Amount)');

    > SQL.Add(' Values (:Division,:DutyNumber,:Amount)');

    >

    > For Count:= 1 to 100 do begin

    > paramByName('Division').AsSmallInt:=1;

    > paramByName('DutyNumber').AsSmallInt:=

    > strtoint(StringGrid1.Cells[0,Count]);

    > paramByName('Amount').AsInteger:=

    > strtoint(StringGrid1.Cells[1,Count]);

    > EXecSQL;

    > end;

    >

  • Profile
    hyo 2001.02.07 20:06
    최석기 Wrote:

    > key Violation이ㅏ 발생하는 경우는 제 경우에는 프라이머리 키로 잡혀 있는 필드에 중복 된 값을 삽입했을 경우에 발생 하던데요..

    >

    > 혹시 중복키 허용이 않되는 인덱스에 중복키를 삽입한 것이 아닌가요?

    >

    > hyo wrote:

    > >

    > > StringGrid에 있는 내용을 table에 insert하려고 합니다. 그런데

    > > 총100개의 Data인데 50개만 insert되고 error가 발생합니다.

    > > 뭐가 잘 못된거줘???

    > >

    > > (에러메시지 : key violation)

    > >

    > > --------------------------------코딩부분

    > > with query1 do begin

    > > Active:=False;

    > > Close;

    > > SQL.clear();

    > > SQL.Add(' Insert into "BOBG.DB"(Division,DutyNumber,Amount)');

    > > SQL.Add(' Values (:Division,:DutyNumber,:Amount)');

    > >

    > > For Count:= 1 to 100 do begin

    > > paramByName('Division').AsSmallInt:=1;

    > > paramByName('DutyNumber').AsSmallInt:=

    > > strtoint(StringGrid1.Cells[0,Count]);

    > > paramByName('Amount').AsInteger:=

    > > strtoint(StringGrid1.Cells[1,Count]);

    > > EXecSQL;

    > > end;

    > >