Q&A

  • type mismatch in expression / 도와주세요~.
dbf형태의 db인테 수정이나 삭제는 문제없는데요,

삽입하려고 하니까 자꾸 type mismatch in expression 에러가 뜹니다.



parambyname('aa')asstring인 string형태의 필드는 괜찮은데,

parambyname('bb')asinteger에서 에러발생하네요.



어떻게 선언해줘야 하나요.

asSmallint나

strtointDef함수를 사용해도 에러가 뜨네요.



뭔가 잘 못된건지 종일 들어다 봐도 모르겠슴다.



도와주세여~~~





4  COMMENTS
  • Profile
    이광형 2000.10.20 04:14
    parambyname('bb')asFloat 로 함 해보시지요...



    유어즈 wrote:

    > dbf형태의 db인테 수정이나 삭제는 문제없는데요,

    > 삽입하려고 하니까 자꾸 type mismatch in expression 에러가 뜹니다.

    >

    > parambyname('aa')asstring인 string형태의 필드는 괜찮은데,

    > parambyname('bb')asinteger에서 에러발생하네요.

    >

    > 어떻게 선언해줘야 하나요.

    > asSmallint나

    > strtointDef함수를 사용해도 에러가 뜨네요.

    >

    > 뭔가 잘 못된건지 종일 들어다 봐도 모르겠슴다.

    >

    > 도와주세여~~~

    >

    >

  • Profile
    유어즈 2000.10.20 18:19
    parambyname('bb')asFloat 로 해도,

    mismatch in expression 에러 발생합니다.

    어디가 문제인지 아래 소스를 봐주세여.



    with datamodule2.query2 do begin

    close;

    sql.clear;



    sql.add('Insert into AAA ');

    sql.add('(AA1, AA2, AA3)');

    sql.add(' values ');

    sql.add(' :d1, :d2, :d3)');



    ParamByName('d1').asinteger :=strtoint(trim(edit1.text));

    ParamByName('d2').asstring :=trim(edit2.text);

    ParamByName('d3').asinteger :=strtoint(trim(edit3.text));



    execsql;



    end;







  • Profile
    이광형 2000.10.20 22:26
    우선 아래의 코딩에 ( 가 빠져 있구요

    sql.add(' values ');

    sql.add(' :d1, :d2, :d3)'); -> sql.add(' ( :d1, :d2, :d3)');

    테이블에 정의된 필드가 integer 형이라면 에러가 나오지 않을것 같은데요...





    유어즈 wrote:

    > parambyname('bb')asFloat 로 해도,

    > mismatch in expression 에러 발생합니다.

    > 어디가 문제인지 아래 소스를 봐주세여.

    >

    > with datamodule2.query2 do begin

    > close;

    > sql.clear;

    >

    > sql.add('Insert into AAA ');

    > sql.add('(AA1, AA2, AA3)');

    > sql.add(' values ');

    > sql.add(' :d1, :d2, :d3)');

    >

    > ParamByName('d1').asinteger :=strtoint(trim(edit1.text));

    > ParamByName('d2').asstring :=trim(edit2.text);

    > ParamByName('d3').asinteger :=strtoint(trim(edit3.text));

    >

    > execsql;

    >

    > end;

    >

    >

    >

  • Profile
    성더기 2000.10.20 22:22
    유어즈 wrote:

    > parambyname('bb')asFloat 로 해도,

    > mismatch in expression 에러 발생합니다.

    > 어디가 문제인지 아래 소스를 봐주세여.

    >

    > with datamodule2.query2 do begin

    > close;

    > sql.clear;

    >

    > sql.add('Insert into AAA ');

    > sql.add('(AA1, AA2, AA3)');

    > sql.add(' values ');



    > sql.add(' :d1, :d2, :d3)');

    --> 이분에 sql.Add(' (:d1, :d2, :d3)'); 이렇게 되야하는거 아닌가여?

    즉 왼쪽 괄호가 하나가 없어서 그러는거 가튼디..



    >

    > ParamByName('d1').asinteger :=strtoint(trim(edit1.text));

    > ParamByName('d2').asstring :=trim(edit2.text);

    > ParamByName('d3').asinteger :=strtoint(trim(edit3.text));



    만약 이분에서 에러가 난다면 Edit1, Edi3에 숫자가 아닌 다른 문자가 들어가서 일겁니다..

    >

    > execsql;

    >

    > end;

    >

    거럼 이만..꾸벅..