Q&A

  • type mismatch에러..
max값 구해서 자동증가시키기위해  아래처럼 하니까 type mismatch 에러가 생기는데요.. 코드 좀 봐주세요...  파라독스에 num필드type은 N, PK입니다.

procedure TForm1.button2Click(Sender: TObject);
var maxnum : integer;
begin

datamodule1.aa.Close;
datamodule1.aa.SQL.Clear;
datamodule1.aa.SQL.Add('select max(num) as maxnum from test');
datamodule1.aa.Open;
maxnum := datamodule1.aa.fieldbyname('maxnum').AsInteger;

datamodule1.aa.close;
datamodule1.aa.sql.clear;

datamodule1.aa.sql.add('insert into test (num, 학년, 이름, 국어, 영어,
수학)');
datamodule1.aa.sql.add('values (:num, :학년, :이름, :국어, :영어, :수학)');
            

datamodule1.aa.ParamByName('num').asinteger:=maxnum+1;
datamodule1.aa.ParamByName('학년').asstring:=(combobox1.text);
datamodule1.aa.ParamByName('이름').asstring:=(combobox2.text);
datamodule1.aa.ParamByName('국어').asstring:=(combobox3.text);
datamodule1.aa.ParamByName('영어').asstring:=(combobox4.text);
datamodule1.aa.ParamByName('수학').asstring:=(combobox4.text);
datamodule1.aa.execsql;

4  COMMENTS
  • Profile
    너구리 2004.03.27 07:07
    아 때마침 들어왔는데

    보게 되었네요..

    datamodule1.aa.ParamByName('num').asstring:=maxnum+1;


    이렇게
    datamodule1.aa.ParamByName('num').asinteger:=maxnum+1;

    그리고 한가지 팁을 알려 드리면 에디터 하단에 나오는 에러메세지를 클릭하고
    F1을 누르면 에러메세지에 대한 예도 나옵니다.

    자료형은 항상 확인하세요.


  • Profile
    왕초보 2004.03.27 07:34
    해결했어요...데이터 모듈에서 보니까 num  field가 ftfloat으로 되어있네요...
    .asfloat하니까 되네요...^^
    암튼 답변주셔서  감사해요...

  • Profile
    너구리 2004.03.27 07:39
    아그렇군요..

    런타임중에 쿼리를 넣으시길래 디자인타임때는 파라미터가 없을거라 생각했는데.

    한가지 더 알려드리면 파라미터 타입을 지정해 놓지 않으면..

    들어간 자료형에 따라 타입이 결정 되는것 같습니다.

    하지만 값을 넣지 않으면 에러가 납니다.

    해결하셨다니 다행이네요 늦은 밤까지 수고 하시네요..

    그럼 즐코딩 하세요~~~

  • Profile
    왕초보 2004.03.27 07:12
    아..네... 방금 저도 asinteger로 바꿨는데..
    마찬가진데요...ㅠ.ㅠ
    어찌 된건지... 암튼 감사합니다..