Q&A

  • 파라독스에서 입력 에러?????
안녕하세요..

델파이를 공부하는 학생입니다.



제가요..



먼저 Database Desktop을 이용하여 Paradox 7을 사용해서 데이타 베이스를 생성했습니다.

필드는

code N 주키

carnam A 30

name A 10

phone A 14

phone2 A 13

post A 7

addr A 60

bigo A 255



이렇게 주었고요...



Sql Explorer에서 연결시켜주었습니다.

그리고 델파이에서 컴포넌트 배치하고 Insert를 할려면 에러가 생깁니다.

물론 Select 는 잘됩니다.

Insert문은..



With Query1 do

Begin

Close;

Sql.Clear;

Sql.Add('Insert into test');

Sql.Add('(code, carnam, name, phone, phone2, post, addr,

bigo)');

Sql.Add('Values(:n1, :n2, :n3, :n4, :n5, :n6, :n7, :n8)');

Parambyname('n1').AsInteger := StrToInt(code_name.text);

Parambyname('n2').AsString := carname_edit.Text;

Parambyname('n3').AsString := name_edit.Text;

Parambyname('n4').AsString := phone_edit.Text;

Parambyname('n5').AsString := phone2_edit.Text;

Parambyname('n6').AsString := post_edit.Text;

Parambyname('n7').AsString := addr_edit.Text;

Parambyname('n8').AsString := bigo_edit.Text;

ExecSql;



End;



에러는 .... EDBEngineError with message 'Type mismatch in expression.'

입니다.

이것을 Query1.Sql.Text로 보면



Insert into test

(code, carnam, name, phone, phone2, post, addr, bigo);

Values(:n1, :n2, :n3, :n4, :n5, :n6, :n7, :n8)

이렇게 나와버림니다.

물론 Query의 속성중 Param 값을 True로 해주었습니다.



이게 무슨 에러인지 모르겠습니다.

정말 이틀째 고민하고 있습니다.

고수님의 답변 부탁드립니다.

2  COMMENTS
  • Profile
    이승현 1999.09.03 18:05
    김운식 께서 말씀하시기를...

    > 안녕하세요..

    > 델파이를 공부하는 학생입니다.

    >

    > 제가요..

    >

    > 먼저 Database Desktop을 이용하여 Paradox 7을 사용해서 데이타 베이스를 생성했습니다.

    > 필드는

    > code N 주키

    > carnam A 30

    > name A 10

    > phone A 14

    > phone2 A 13

    > post A 7

    > addr A 60

    > bigo A 255

    >

    > 이렇게 주었고요...

    >

    > Sql Explorer에서 연결시켜주었습니다.

    > 그리고 델파이에서 컴포넌트 배치하고 Insert를 할려면 에러가 생깁니다.

    > 물론 Select 는 잘됩니다.

    > Insert문은..

    >

    > With Query1 do

    > Begin

    > Close;

    > Sql.Clear;

    > Sql.Add('Insert into test');

    > Sql.Add('(code, carnam, name, phone, phone2, post, addr,

    > bigo)');

    > Sql.Add('Values(:n1, :n2, :n3, :n4, :n5, :n6, :n7, :n8)');

    > Parambyname('n1').AsInteger := StrToInt(code_name.text);

    > Parambyname('n2').AsString := carname_edit.Text;

    > Parambyname('n3').AsString := name_edit.Text;

    > Parambyname('n4').AsString := phone_edit.Text;

    > Parambyname('n5').AsString := phone2_edit.Text;

    > Parambyname('n6').AsString := post_edit.Text;

    > Parambyname('n7').AsString := addr_edit.Text;

    > Parambyname('n8').AsString := bigo_edit.Text;

    > ExecSql;

    >

    > End;

    >

    > 에러는 .... EDBEngineError with message 'Type mismatch in expression.'

    > 입니다.

    > 이것을 Query1.Sql.Text로 보면

    >

    > Insert into test

    > (code, carnam, name, phone, phone2, post, addr, bigo);

    > Values(:n1, :n2, :n3, :n4, :n5, :n6, :n7, :n8)

    > 이렇게 나와버림니다.

    > 물론 Query의 속성중 Param 값을 True로 해주었습니다.

    >

    > 이게 무슨 에러인지 모르겠습니다.

    > 정말 이틀째 고민하고 있습니다.

    > 고수님의 답변 부탁드립니다.



    안녕하세요.

    파라독스에서 Number 는 실수형 입니다.

    따라서 파라미터 가 안 맞아서 그런 에러가 나구요.

    그러니 parambyname('n1').asfloat:=여기에 float 형의 값;

    하시면 될겁니다.

  • Profile
    이승현 1999.09.03 18:08
    빠트린것이 있네요.

    float형을 쓰지않고 integer로 쓸려면

    long int 형을 쓰시면 됩니다.

    대답이