Q&A

  • Key Violation....
갑자기 에러가 납니다..



소스포함합지여..소스상에 문제는 없는것같은데..흑흑..



//테이블에 입력값 저장

machinetbl.Append;

machinetbl.FieldByName('Lot_num').asstring:=lotno.Text;

machinetbl.FieldByName('Device').asstring:=devicesel.Text;

machinetbl.FieldByName('Lot_serial').asinteger:=strtoint(lotse.Text);

machinetbl.FieldByName('Chipsize').asfloat:=strtofloat(chips.Text);

machinetbl.FieldByName('검사수준').asinteger:=strtoint(interval.Text);

machinetbl.FieldByName('장비번호').asstring:=machine_name.Text;

machinetbl.FieldByName('일자').asdatetime:=strtodatetime(FormatDateTime('YYYY-MM-DD',now));

machinetbl.FieldByName('운전시작시간').asdatetime:=strtodatetime(Formatdatetime('hh:mm:ss',now));

machinetbl.FieldByName('정지시간').asdatetime:=strtodatetime(Formatdatetime('hh:mm:ss', now+(1/1440)*20));

//정지시간은 무조건 시작시간 20분후로했습니다..

machinetbl.Post;



tmptime:=now;

decodetime(tmptime, hh, mm, ss, ms);

firstsec:=hh*3600 + mm*60 + ss;



tmptime:=now+((1/1440)*20);

decodetime(tmptime, hh, mm, ss, ms);

lastsec:=hh*3600 + mm*60 + ss;//종료시간의 초환산값



dosec:=lastsec - firstsec;

//초를 다시 시,분,초로 환산

hh:=dosec div 3600;

dosec:= dosec mod 3600;

mm:=dosec div 60;

ss:= dosec mod 60;



machinetbl.Append;

machinetbl.FieldByName('가동시간').asdatetime:=encodetime(hh, mm, ss, 0);

machinetbl.Post;

//이부분은 출력이 안되구여.



optbl.Append;

optbl.FieldByName('장비번호').asstring:=machine_name.Text;

optbl.FieldByName('일자').asdatetime:=strtodatetime(FormatDateTime('YYYY-MM-DD',now));

optbl.Post;

end;



고수님들의 조언을~

1  COMMENTS
  • Profile
    강호규 2000.08.19 08:59
    heimdal wrote:

    > 갑자기 에러가 납니다..

    >

    > 소스포함합지여..소스상에 문제는 없는것같은데..흑흑..

    >

    > //테이블에 입력값 저장

    > machinetbl.Append;

    > machinetbl.FieldByName('Lot_num').asstring:=lotno.Text;

    > machinetbl.FieldByName('Device').asstring:=devicesel.Text;

    > machinetbl.FieldByName('Lot_serial').asinteger:=strtoint(lotse.Text);

    > machinetbl.FieldByName('Chipsize').asfloat:=strtofloat(chips.Text);

    > machinetbl.FieldByName('검사수준').asinteger:=strtoint(interval.Text);

    > machinetbl.FieldByName('장비번호').asstring:=machine_name.Text;

    > machinetbl.FieldByName('일자').asdatetime:=strtodatetime(FormatDateTime('YYYY-MM-DD',now));

    > machinetbl.FieldByName('운전시작시간').asdatetime:=strtodatetime(Formatdatetime('hh:mm:ss',now));

    > machinetbl.FieldByName('정지시간').asdatetime:=strtodatetime(Formatdatetime('hh:mm:ss', now+(1/1440)*20));

    > //정지시간은 무조건 시작시간 20분후로했습니다..

    > machinetbl.Post;

    >

    > tmptime:=now;

    > decodetime(tmptime, hh, mm, ss, ms);

    > firstsec:=hh*3600 + mm*60 + ss;

    >

    > tmptime:=now+((1/1440)*20);

    > decodetime(tmptime, hh, mm, ss, ms);

    > lastsec:=hh*3600 + mm*60 + ss;//종료시간의 초환산값

    >

    > dosec:=lastsec - firstsec;

    > //초를 다시 시,분,초로 환산

    > hh:=dosec div 3600;

    > dosec:= dosec mod 3600;

    > mm:=dosec div 60;

    > ss:= dosec mod 60;

    >

    > machinetbl.Append;

    > machinetbl.FieldByName('가동시간').asdatetime:=encodetime(hh, mm, ss, 0);

    > machinetbl.Post;

    > //이부분은 출력이 안되구여.

    >

    > optbl.Append;

    > optbl.FieldByName('장비번호').asstring:=machine_name.Text;

    > optbl.FieldByName('일자').asdatetime:=strtodatetime(FormatDateTime('YYYY-MM-DD',now));

    > optbl.Post;

    > end;

    >

    > 고수님들의 조언을~



    Key Violation.... 에러는

    테이블 등록작업시에

    Primary Key 또는 Unique Key가 중복되기 때문에

    발생하는 에러이기 때문에

    키값이 중복되어 입력하려 할때 발생합니다.



    삽입시

    키값이 중복되어 발생할 확률이

    있는가를 검토해보십시요.