Q&A

  • Edit를 사용하여 DB에 데이타 INSERT...
DBEdit를 사용하지 않고, Edit와 TQuery를 사용하여 데이타를 INSERT를 하려는데..

에러가 발생합니다. 소스는 아래와 같구요 컴파일은 성공했는데 실행상에 문제가

발생하였습니다.. 에러메세지는

Project Project_0703.exe raised exception class EConvertError with message " ? is

not a vaild integer value'. Process stopped. Use Step or Run to continue.



procedure TForm2.BitBtn1Click(Sender: TObject);

var

cs_Nm : String;

saup_No : String;

tel_No : String;

fax_No : String;

cs_Stff : String;

cs_Stff_tel : String;

E_mail : String;

cs_D : String;

zp_Cd : String;

cs_Adrss : String;

jomog : String;

gubun : String;

sls_m : String;

sls_w : String;

bnk_nm : String;

bnk_Accnt : String;

begin

cs_Nm := Trim(Edit2.Text);

saup_No := Trim(Edit3.Text);

cs_D := Trim(Edit4.Text);

tel_No := Trim(Edit5.Text);

fax_No := Trim(Edit6.Text);

cs_Stff := Trim(Edit7.Text);

cs_Stff_tel := Trim(Edit8.Text);

E_mail := Trim(Edit9.Text);

zp_Cd := Trim(Edit10.Text);

cs_Adrss := Trim(Edit11.Text);

jomog := Trim(Edit12.Text);

gubun := Trim(Combobox1.Text);

sls_m := Trim(Edit13.Text);

sls_w := Trim(Edit14.Text);

bnk_nm := Trim(Edit15.Text);

bnk_Accnt := Trim(Edit16.Text);



if not Saupnocheck(saup_No) then //사업자 등록번호 체크

begin

ShowMessage('사업자 등록번호가 잘못 입력되었습니다');

Exit;

end

else

begin //Insert Statement

with Query2 do begin

Close;

SQL.Clear;

SQL.Add('INSERT INTO Customers(CstmrName,CstmrP,C_No,Tlphn,Fx,');

SQL.Add('C_Prt_Nm,C_Prt_Tlphn,ZpCd,Sub_Adrss,C_Dscrptn,Bnk_Nm,');

SQL.Add('Accnt_No, Ds_Sl_Stff_M,Gubun,Ds_Sl_Stff_W,hstry,E_Mail)');

SQL.Add('VALUES (:v_cs_Nm,:cs_D,:v_saup_No,');

SQL.Add(':v_tel_No,:v_fax_No,:v_cs_Stff,:v_cs_Stff_tel,');

SQL.Add(':v_zp_Cd,:v_cs_Adrss,:v_jomog,:v_bnk_nm,v_bnk_Accnt');

SQL.Add(':v_sls_m,:v_gubun,:v_sls_w,');

SQL.Add(':v_hstry,:v_E_mail)');

ParamByName('v_cs_Nm').AsString := cs_Nm;

ParamByName('v_saup_No').AsString := saup_No;

ParamByName('v_tel_No').AsString := tel_No;

ParamByName('v_fax_No').AsString := fax_No;

ParamByName('v_cs_Stff').AsString := cs_Stff;

ParamByName('v_cs_Stff_tel').AsString := cs_Stff_tel;

ParamByName('v_E_mail').AsString := E_mail;

ParamByName('v_cs_D').AsString := cs_D;

ParamByName('v_zp_Cd').AsString := zp_Cd;

ParamByName('v_cs_Adrss').AsString := cs_Adrss;

ParamByName('v_jomog').AsString := jomog;

ParamByName('v_gubun').AsString := gubun;

ParamByName('v_sls_m').AsString := sls_m;

ParamByName('v_sls_w').AsString := sls_w;

ParamByName('v_bnk_nm').AsString := bnk_nm;

ParamByName('v_bnk_Accnt').AsString := bnk_Accnt;

ExecSQL;

end

end;





end;



그냥 단순하게 입력하는 문제인데.. 문제가 무엇인지 판단이 안섭니다... TQuery로 INSERT를 할수있는데 제가 방향을 잘못잡은건지 아님 다른 처리가 또 필요한지 궁금합니다... 그리고 꼭 DBEdit를 사용해야 하는건지.... 아무튼 고수님들의 자세한 리플바랍니다....



그럼..





4  COMMENTS
  • Profile
    Lee 2001.07.05 23:24
    오류메세지중 "vaild integer value" 메세지는 타입이 틀리므로 나오는 오류입니다.



    파라미터 타입이 전부 String 타입이라면

    아마도 테이블 필드를 다시 한번 확인해보시면

    Integer 또는 numeric의 속성을 지닌 필드가 있을 것 같네요..







    델초보 wrote:

    > DBEdit를 사용하지 않고, Edit와 TQuery를 사용하여 데이타를 INSERT를 하려는데..

    > 에러가 발생합니다. 소스는 아래와 같구요 컴파일은 성공했는데 실행상에 문제가

    > 발생하였습니다.. 에러메세지는

    > Project Project_0703.exe raised exception class EConvertError with message " ? is

    > not a vaild integer value'. Process stopped. Use Step or Run to continue.

    >

    > procedure TForm2.BitBtn1Click(Sender: TObject);

    > var

    > cs_Nm : String;

    > saup_No : String;

    > tel_No : String;

    > fax_No : String;

    > cs_Stff : String;

    > cs_Stff_tel : String;

    > E_mail : String;

    > cs_D : String;

    > zp_Cd : String;

    > cs_Adrss : String;

    > jomog : String;

    > gubun : String;

    > sls_m : String;

    > sls_w : String;

    > bnk_nm : String;

    > bnk_Accnt : String;

    > begin

    > cs_Nm := Trim(Edit2.Text);

    > saup_No := Trim(Edit3.Text);

    > cs_D := Trim(Edit4.Text);

    > tel_No := Trim(Edit5.Text);

    > fax_No := Trim(Edit6.Text);

    > cs_Stff := Trim(Edit7.Text);

    > cs_Stff_tel := Trim(Edit8.Text);

    > E_mail := Trim(Edit9.Text);

    > zp_Cd := Trim(Edit10.Text);

    > cs_Adrss := Trim(Edit11.Text);

    > jomog := Trim(Edit12.Text);

    > gubun := Trim(Combobox1.Text);

    > sls_m := Trim(Edit13.Text);

    > sls_w := Trim(Edit14.Text);

    > bnk_nm := Trim(Edit15.Text);

    > bnk_Accnt := Trim(Edit16.Text);

    >

    > if not Saupnocheck(saup_No) then //사업자 등록번호 체크

    > begin

    > ShowMessage('사업자 등록번호가 잘못 입력되었습니다');

    > Exit;

    > end

    > else

    > begin //Insert Statement

    > with Query2 do begin

    > Close;

    > SQL.Clear;

    > SQL.Add('INSERT INTO Customers(CstmrName,CstmrP,C_No,Tlphn,Fx,');

    > SQL.Add('C_Prt_Nm,C_Prt_Tlphn,ZpCd,Sub_Adrss,C_Dscrptn,Bnk_Nm,');

    > SQL.Add('Accnt_No, Ds_Sl_Stff_M,Gubun,Ds_Sl_Stff_W,hstry,E_Mail)');

    > SQL.Add('VALUES (:v_cs_Nm,:cs_D,:v_saup_No,');

    > SQL.Add(':v_tel_No,:v_fax_No,:v_cs_Stff,:v_cs_Stff_tel,');

    > SQL.Add(':v_zp_Cd,:v_cs_Adrss,:v_jomog,:v_bnk_nm,v_bnk_Accnt');

    > SQL.Add(':v_sls_m,:v_gubun,:v_sls_w,');

    > SQL.Add(':v_hstry,:v_E_mail)');

    > ParamByName('v_cs_Nm').AsString := cs_Nm;

    > ParamByName('v_saup_No').AsString := saup_No;

    > ParamByName('v_tel_No').AsString := tel_No;

    > ParamByName('v_fax_No').AsString := fax_No;

    > ParamByName('v_cs_Stff').AsString := cs_Stff;

    > ParamByName('v_cs_Stff_tel').AsString := cs_Stff_tel;

    > ParamByName('v_E_mail').AsString := E_mail;

    > ParamByName('v_cs_D').AsString := cs_D;

    > ParamByName('v_zp_Cd').AsString := zp_Cd;

    > ParamByName('v_cs_Adrss').AsString := cs_Adrss;

    > ParamByName('v_jomog').AsString := jomog;

    > ParamByName('v_gubun').AsString := gubun;

    > ParamByName('v_sls_m').AsString := sls_m;

    > ParamByName('v_sls_w').AsString := sls_w;

    > ParamByName('v_bnk_nm').AsString := bnk_nm;

    > ParamByName('v_bnk_Accnt').AsString := bnk_Accnt;

    > ExecSQL;

    > end

    > end;

    >

    >

    > end;

    >

    > 그냥 단순하게 입력하는 문제인데.. 문제가 무엇인지 판단이 안섭니다... TQuery로 INSERT를 할수있는데 제가 방향을 잘못잡은건지 아님 다른 처리가 또 필요한지 궁금합니다... 그리고 꼭 DBEdit를 사용해야 하는건지.... 아무튼 고수님들의 자세한 리플바랍니다....

    >

    > 그럼..

    >

    >

  • Profile
    지나가다. 2001.07.05 22:23
    필드 타입과 파라미터 타입이 안맞아서 그런것 같네여....



    파라미터를 사용할경우 파라미터 타입을 설정해줘야 되는데....



    ..근데 소스를 보니 동적으로 입력되는 sql문이라면 굳이 파라미터를 쓸 필요가 있을까요...

    차라리 insert update 모듈을 만들거나 sql문에 바로 입력하는게 나을듯 한데....



    도움이 되시길....

  • Profile
    델초보 2001.07.06 00:33
    답변 감사합니다... 그런데...

    BD의 테이블을 필드타입을 확인햇는데... 자동으로 순번을 부여하는 id(SEQUENCE)를 생성하는 필드외에는거의가 char type이거나 varchar입니다... 만약 id(int)필드때문이라면.. id 필드에 INSERT하면서 에러가 난다는소린데... id필드는 자동으로 생성되는 것이지 임의적으로 삽입되는것이 아닙니다..

    말씀하신것 이외에 다른 가능성은 없는가요... 무지 급합니다...그리고 개발환경은

    MS_SQL이고요,, ORACLE보다 MS_SQL이 델파이와 궁합이 잘 안맞나요...?

    한번더 리플 달아주세요..

    그럼...



    지나가다. wrote:

    > 필드 타입과 파라미터 타입이 안맞아서 그런것 같네여....

    >

    > 파라미터를 사용할경우 파라미터 타입을 설정해줘야 되는데....

    >

    > ..근데 소스를 보니 동적으로 입력되는 sql문이라면 굳이 파라미터를 쓸 필요가 있을까요...

    > 차라리 insert update 모듈을 만들거나 sql문에 바로 입력하는게 나을듯 한데....

    >

    > 도움이 되시길....

  • Profile
    Lee 2001.07.06 00:47
    insert문장은 모든 필드에 대한 개별적인 data를 주어야하는걸로 알고 있습니다.

    Update문장은 필요한 필드만을 선택적으로 줄 수 있지만요..

    님처럼 필드를 설정하고 그에 맞는 파라미터값을 준다면 테이블의 필드순서와는

    무관하지만 기본적으로는 모든 필드가 정의되어야 하는 걸로 알고 있습니다.

    물론, 제가 알고 있는 것과 틀릴 수 있지만...

    자동으로 순번을 증가시킨다고 했는데

    어떻게 정의해서 사용하는지 저도 궁금(이 부분은 저도 몰랐네요,

    전 무식하게 일련번호를 Setting했슴돠 ^^;)



    만약 급한 문제라면 모든 필드를 정의해 놓고 사용하는 것도 시도해 보겠거든요..

    한번 속는 셈치고 해보시면 어떨까요?



    delphi가 ms계열이 아니라서 vb보단 궁합이 안 맞겠지만

    프로젝트 운용시 큰 문제는 없었던것 같습니다.



    ^^;



    델초보 wrote:

    > 답변 감사합니다... 그런데...

    > BD의 테이블을 필드타입을 확인햇는데... 자동으로 순번을 부여하는 id(SEQUENCE)를 생성하는 필드외에는거의가 char type이거나 varchar입니다... 만약 id(int)필드때문이라면.. id 필드에 INSERT하면서 에러가 난다는소린데... id필드는 자동으로 생성되는 것이지 임의적으로 삽입되는것이 아닙니다..

    > 말씀하신것 이외에 다른 가능성은 없는가요... 무지 급합니다...그리고 개발환경은

    > MS_SQL이고요,, ORACLE보다 MS_SQL이 델파이와 궁합이 잘 안맞나요...?

    > 한번더 리플 달아주세요..

    > 그럼...

    >

    > 지나가다. wrote:

    > > 필드 타입과 파라미터 타입이 안맞아서 그런것 같네여....

    > >

    > > 파라미터를 사용할경우 파라미터 타입을 설정해줘야 되는데....

    > >

    > > ..근데 소스를 보니 동적으로 입력되는 sql문이라면 굳이 파라미터를 쓸 필요가 있을까요...

    > > 차라리 insert update 모듈을 만들거나 sql문에 바로 입력하는게 나을듯 한데....

    > >

    > > 도움이 되시길....

    • 꼴등
    • 2001.07.05 23:29
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 구창민
      2001.07.06 01:28
      음. ^_^ Sorted 속성을 False로 바꾸면 정렬이 되지 않습니다. 무슨 오해가 있으신듯.. 속성을 Fa...
    • 꼴등
      2001.07.06 03:59
      답변 감사드립니다. 코딩으로 False로 지정해주니까 되네요. 오브젝트 인스펙터에는 분명 False로 되어 ...
    • 구창민
      2001.07.06 01:30
      초보 wrote: > 이거 에러좀 잡아주세요................... DLL의 엑스포트와 임포트 되는 부분과 프로...
    • xxx
    • 2001.07.05 23:20
    • 4 COMMENTS
    • /
    • 0 LIKES
    • Lee
      2001.07.05 23:36
      만약 StringGrid에 타이틀을 갖고있다면 if Query1.RecordCount = 0 then StringGrid1.RowCount := ...
    • 초보
      2001.07.05 23:29
      xxx wrote: > StringGrid는 Query수만큼 count가 자동으로 생성되게 하는 방법을 아시나요? Stringgrid...
    • xxx
      2001.07.05 23:40
      초보 wrote: > xxx wrote: > > StringGrid는 Query수만큼 count가 자동으로 생성되게 하는 방법을 아시나...
    • Lee
      2001.07.06 00:37
      위치 문제일 것 같은데요... RecordCount는 Query가 Open된 후 에 적용됩니다. Query1.Close; Query1....
    • 델초보
    • 2001.07.05 22:11
    • 4 COMMENTS
    • /
    • 0 LIKES
    • Lee
      2001.07.05 23:24
      오류메세지중 "vaild integer value" 메세지는 타입이 틀리므로 나오는 오류입니다. 파라미터 타입이 전...
    • 지나가다.
      2001.07.05 22:23
      필드 타입과 파라미터 타입이 안맞아서 그런것 같네여.... 파라미터를 사용할경우 파라미터 타입을 설정...
    • 델초보
      2001.07.06 00:33
      답변 감사합니다... 그런데... BD의 테이블을 필드타입을 확인햇는데... 자동으로 순번을 부여하는 id(SE...
    • Lee
      2001.07.06 00:47
      insert문장은 모든 필드에 대한 개별적인 data를 주어야하는걸로 알고 있습니다. Update문장은 필요한 필...
    • mallove
    • 2001.07.05 22:02
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하기
      2001.07.05 22:17
      알리아스를 설정하여 작업을 하시면 아무 폴더나라는 말을 쓰신다면 그때마다 아무 폴더를 알리아스의 Pat...
    • 홍성락
      2001.07.05 22:17
      왕초보 wrote: > 버튼을 눌렀 을때 그리드의 더블클릭 이벤트를 주고 싶은데요.. > 어떻게 해야 하는지 ...
    • 홍성락
      2001.07.05 22:31
      인어공주 wrote: > project - option 에서 auto create form1 만 생성이 되게 하고 > form1에 있는 버튼...
    • 델초보
    • 2001.07.05 20:11
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 바람개비
      2001.07.05 20:22
      아래에 같은 질문을 올린것 같은데, 원하는 명령들을 하나의 배치파일에 넣어서 실행하면 되지 않을까요? ...
    • 하기
      2001.07.05 21:23
      일반적으로 C:Program FilesBorlandDelphi5HelpToolshcw.exe 이 화일을 이용하시면 제작하실수 있답니다....
    • 나이스
      2001.07.05 21:41
      제가 이책을 보면서 하고 있었는데 안나오는것 같아요...^^;; 님의 성실한 답변에도 불구하고 제가 컴파일...
    • 하기
      2001.07.05 22:13
      분명히 제가 그책에서 봤거든요.. delphi 5X(4X인가) Bible에서 Help만드는 방법해서 나왔거든요... MSWo...
    • 나이스
      2001.07.05 23:06
      정말 님의 도움에 감사드립니다.... 이제 형식을 알았으니 다시 작업(???)에 들어갈수 있을것 같네요... ...
    • 아폴론
      2001.07.05 20:01
      인어공주 wrote: > 글을 찾아봐도 제 질문은 너무 쉬운것인지.. > > 글이 올라와 있는게 없어서 이렇게...
    • 무스리
    • 2001.07.05 19:37
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 방문현
      2001.07.06 02:40
      무스리 wrote: > Oracle의 데이타를 ODBC를 이용해 AS400에 insert 하는 데 다음과 같은 에러가 나오는군...
    • 무스리
      2001.07.06 03:33
      답변 잘 보았습니다. 인덱스키에 중복된 값이 들어가면 duplication 에러가 나지요. 지금의 에러는 ...
    • xxx
    • 2001.07.05 19:17
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 바람개비
      2001.07.05 21:57
      **
    • xxx
      2001.07.05 20:55
      제대로 설명을 못드려 죄송합니다... 다시 한번 질문을 올립니다. 소스는 이렇습니다. with StringGrid...
    • 바람개비
      2001.07.05 21:54
      움... 제가 중요하게 생각하는것은 테이블에 어떤형식으로 저장이 되어 있느냐는 것이거든요. 그래야 쿼리...
    • xxx
      2001.07.05 22:08
      이런형식입니다... bk - by - lv 01 - 01 - 01 02 - 02 - 02 03 - 03 - 03 04 - 04 - 04 05 - 05 - 0...