Q&A

  • DB저장후 에러가납니다..!!
안녕하십니까..!!고수님들..한가지만 봐주세요..!!

실행했을떼..버튼을 클릭하면 텍스트에 있는 디비를 파라독스 DB로 저장시키는 것입니다.

간단히..예를들어 코딩했습니다..!!

버튼을 클릭하고 나면 저장이 되면서 에러가 발생합니다..!!ㅜ.ㅜ



에러 내용은...

Project Text_DB .exe raised excetion class EConvertError with message "->

'is not a valid integer value'.

Process Stoped. Use Step or Run to continue.

입니다....테이블을 닫아주지 못해서 그런건지..잘모르겠습니다..!!

한번 확인해주십시요..!!



텍스트 디비.....

1 M110600823 최수현

2 M110600026 이병희

3 M110601823 김래선

4 M110601825 최충섭

5 M110601827 최수림

6 M110601828 손준태

7 M110601830 성학선



procedure TForm1.Button1Click(Sender: TObject);

var

f : TextFile;

s : String;

i, RecCnt : Integer;

begin

assignfile(F,'c:Text_DBtest.txt');

reset(F);

RecCnt := Table1.RecordCount;

if RecCnt > 0 then

begin

for i := 0 to RecCnt do

begin

readln(F,S);

Table1.Append;

Table1.Edit;

Table1.FieldByName('Num').asInteger := StrtoInt(Copy(S,1,1));

Table1.FieldByName('Hakbun').asString := Copy(S,3,10);

Table1.FieldbyName('Name').asString := Copy(S,13,8);

Table1.Post;

Table1.Next;

end;

closefile(F);

end;

end;

3  COMMENTS
  • Profile
    2001.12.19 01:48
    파라독스도 필드의 데이타형을 정해주는 부분이 있는데..

    아무래도 실 데이타와 필드의 형태가 같지 않아서 생기는 에러 같군요

    'is not a valid integer value'

    이 부분인데 만약 그게 문제가 아니라면 데이타가 끝나는데 1번 더 도는것도 예상할수

    있구요...

    for 문을 0부터 시작했으니까 카운터에서 1을 뺀수 만큼 돌아야 하지 않을까..

    for i := 0 to RecCnt-1 do



    한번 확인해 보세요







    Commom wrote:

    > 안녕하십니까..!!고수님들..한가지만 봐주세요..!!

    > 실행했을떼..버튼을 클릭하면 텍스트에 있는 디비를 파라독스 DB로 저장시키는 것입니다.

    > 간단히..예를들어 코딩했습니다..!!

    > 버튼을 클릭하고 나면 저장이 되면서 에러가 발생합니다..!!ㅜ.ㅜ

    >

    > 에러 내용은...

    > Project Text_DB .exe raised excetion class EConvertError with message "->

    > 'is not a valid integer value'.

    > Process Stoped. Use Step or Run to continue.

    > 입니다....테이블을 닫아주지 못해서 그런건지..잘모르겠습니다..!!

    > 한번 확인해주십시요..!!

    >

    > 텍스트 디비.....

    > 1 M110600823 최수현

    > 2 M110600026 이병희

    > 3 M110601823 김래선

    > 4 M110601825 최충섭

    > 5 M110601827 최수림

    > 6 M110601828 손준태

    > 7 M110601830 성학선

    >

    > procedure TForm1.Button1Click(Sender: TObject);

    > var

    > f : TextFile;

    > s : String;

    > i, RecCnt : Integer;

    > begin

    > assignfile(F,'c:Text_DBtest.txt');

    > reset(F);

    > RecCnt := Table1.RecordCount;

    > if RecCnt > 0 then

    > begin

    > for i := 0 to RecCnt do

    > begin

    > readln(F,S);

    > Table1.Append;

    > Table1.Edit;

    > Table1.FieldByName('Num').asInteger := StrtoInt(Copy(S,1,1));

    > Table1.FieldByName('Hakbun').asString := Copy(S,3,10);

    > Table1.FieldbyName('Name').asString := Copy(S,13,8);

    > Table1.Post;

    > Table1.Next;

    > end;

    > closefile(F);

    > end;

    > end;

  • Profile
    Commom 2001.12.19 02:30
    ㅜ.ㅜ...지켜봐주셔서 감사합니다..!!

    근데.똑같은 에러가나는데요..!!

    다른 방법을 써서 해결은 했는데...!!

    지금 나는 에러가 무엇 때문에 어디가 잘못
  • Profile
    잘난체 2001.12.19 18:55


    제가 봤을때는 StrToInt(삐리리)에서 String을 integer로 변환이 불가능한값이

    있는 것 같습니다....



    이런경우 자료한건씩 저장하는 Commit하는 경우는 상관없겠지만...

    전체 읽은뒤에 저장하고 Commit하는 경우는 전체가 저장이 안되는 경우가 발생

    합니다..



    이때 StrToInt(삐리리)를 사용하지 마시고... StrToIntDef(삐리리,Default) 사용해서

    해보십시요... 물론 변환이 안된 자료에 대해서 대책도 있어야 겠지요...



    참고로 StrToIntDef(삐리리,Default)의 사용법은 다음과 같습니다...



    문법 : function StrToIntDef(const S: string; Default: Longint): Longint;



    문자열을 정수로 변환한다. StrToInt 함수는 변환이 불가능할 경우

    예외를 발생시키지만 이 함수는 변환이 불가능할 경우 Default 값을 사용한다.