with DataModule1.ADOFind do
    begin
     Close;
     sql.Clear;
     sql.Add('select * from DirectTable where ID='''+Edit1.Text+'''' );
     Open;
    end;数据库是用ACCESS做的,字段ID是数字类型。程序编译没有错误,运行时报错:表达式中数据类型不匹配。
我想错误肯定是出在Edit.Text和ID之间它们的数据类型不一致造成的,但是不知道怎么改!希望帮忙!

解决方案 »

  1.   

    在SQL中,我对引号一直迷糊,希望能讲讲引号在SQL中的用法!谢谢
      

  2.   

    sql.Add('select * from DirectTable where ID='+Edit1.Text);
      

  3.   

    很简单,就是你的dataset的sql属性不管是常量还是表达式,反正结果要能在数据库里能正常执行,你的数据库里是数字类型,如果你的edit1.text为111,那传给数据库的是'select * from DirectTable where ID='111'这样本来在数据库中执行就不合法.而应该是'select * from DirectTable where ID=111,所以要用楼上的语句
      

  4.   

    楼上的兄弟,说来说去,就是我对引号还没有太了解,你能不能给我讲一下SQL里一些引号的作用呢!
      

  5.   

    一般字符串型的都要用引号,数字或浮点型的都不用引号所有要用到引号的地方都用Quotedstr()就行了,绝对不会有错,每次都要算算用了几个引号很麻烦
     字符型:
     sqlstr :='select * from DirectTable where name='+Quotedstr(Edit1.Text);
     sql.add(sqlstr);
     数字型:
     sqlstr :='select * from DirectTable where id='+Edit1.Text;
     sql.add(sqlstr);
      

  6.   

    星雨說的沒錯,我今天也遇到這個問題。
    字符型:
    sqlstr :='select * from DirectTable where name='+Quotedstr(Edit1.Text);
    sql.add(sqlstr);
    数字型:
    sqlstr :='select * from DirectTable where id='+Edit1.Text;
    sql.add(sqlstr);