表中日期类型字段:时间sqlstr:='select * from 表 where 时间 between '''+edit6.text+'%'' and '''+edit7.text+'%'''  ;   dm.adoquery1.Close;
   dm.adoquery1.SQL.Clear;
   dm.adoquery1.SQL.Add(sqlstr);
   dm.adoquery1.open;
输入2004-5-1和2004-6-30运行出错,提示表达式数据类型不匹配
问题可能出现在edit.text与字段类型不匹配,怎样解决!

解决方案 »

  1.   

    不行啊
    设断点运行到dm.adoquery1.open;提示出错
      

  2.   

    sqlstr:='select * from 表 where 时间 between '''+edit6.text+'''' and '''+edit7.text+''''
      

  3.   

    to:yinweixian(blackyin)sqlstr:='select * from 表 where 时间 between '''+edit6.text+'''' and '''+edit7.text+''''这语句就是错的
      

  4.   

    不用转化成日期,  sqlstr:='select * from 表 where 时间 between '+''''+edit6.text+''''+' and '+''''+edit7.text+'''';
      

  5.   

    还是提示类型不匹配
    我感觉我的sqlstr语句没错
      

  6.   

    字符串转化为日期的函数:strtodate,strtodatetime
      

  7.   

    sqlstr:='select * from 仓库入库管理 where 入库时间 between '''+strtodate(edit6.text)+''' and '''+strtodate(edit7.text)+''''  ;提示incompatible types :'string'and'tdatetime'
      

  8.   

    我觉得是你在字段山少加了东西!你如果要是SQL SERVER的话 要按照日期查的话
    要这样写
    select * from 仓库入库管理 where convert(char(10),入库日期,102) between '''+edit6.text+''' and ''' ecit7.text +'''';
    如果是按照时间的话就要把
    102修改为108
      

  9.   

    如果是access的话 要这样写select * from 仓库入库管理 where DateValue(入库日期) between '''+edit6.text+''' and ''' ecit7.text +'''';
      

  10.   

    查时间的话 把Datavalue修改为TimeValue
      

  11.   

    后台数据库是什么?如果是sql server 2000 的话,就要看一下你那时间的字段是不是datetime类型,如果是的话,就要把你的edit的值转为日期类型,或直接换一个控件:DateTimePicker。如果不是datetime类型的话就要你输入的日期一直都是一样的。这个日期查询我之前也弄了很久,所以希望这个解答能解决你的问题啦。呵呵!
      

  12.   

    谢谢诸位的帮助,感谢welllove88(寒林) 的DateValue(入库日期)