delphi7+access2003开发程序,想选择一段时间内的数据记录,我写的sql语句如下:select * form [tablename] where 时间  between DateTimePicker1.date and DateTimePicker2.date其中时间我设置的是 日期类型,  程序执行的时候, 查询没有记录, 可数据库里明明有符合这个时间段的有记录,就是没查询出来,大侠们,这是怎么回事呀?

解决方案 »

  1.   

    断点看看出来的SQL语句到底是什么。
      

  2.   

    检查时间格式。
    可以试试   >=  <=方式的
      

  3.   

    select * form [tablename] where 时间 >= #2012-4-20# and 时间 <= #2012-4-25#
    这样试试
      

  4.   


    断点:sql =select * from [tablename] where   时间 between DateTimePicker1.date and DateTimePicker2.date
      然后显示datetimepicker1.date 没有默认值
    这个是怎么回事?
      

  5.   


    我现在主要是这个时间格式好像不怎么对
    刚才跟踪了一下,datetimepicker1.date的值是浮点数
      

  6.   

    用参数传递日期吧,Access查询时日期格式是有要求的
      

  7.   


    strSQL := strSQL + ' and 时间字段 between #'+ 时间A +'# and #'+ 时间B +'#'
      

  8.   

    1、时间格式条件应使用>,<,>=,<=;between  and是很不好用的。
    2、问题肯定出在时间格式上多尝试,比如#2012-04-20# 
      

  9.   


    sql:=sql+'where (时间 = datetimePicker1.date)';查询之后提示:datetimepicker1.date 无默认值时间在数据库里设置的是 日期/时间 类型,  短日期,我不执行sql语句的时候datetimepicker1.date 是有值的:   edit1.text:=datetostr(datetimepicker1.date);   edit1 在程序执行之后  显示的是datetimepicker1的日期。  可是为什么执行语句之后会有上面那个提示呢?  请高手指教!
      

  10.   

    sql:=sql+' where 时间 = #'+datetimePicker1.date+'#';
      

  11.   


    1.断点出SQL语句2.然后把SQL语句在ACCESS查询一下,看看是否有语法错误。sql:=sql+'where (时间 = datetimePicker1.date)';你这里是把datetimePicker1.date当成字符串了
    按楼上的写法:adoquery.Sql.Text := 'select * form [tablename] where 时间 >= #2012-4-20# and 时间 <= #2012-4-25#'
    做你的的变量方式应该是
    adoquery.Sql.Text := 'select * form tab where 时间 >= #'+datetostr(datetimepicker1.date)+'# and 时间 <= #'+datetostr(datetimepicker1.date)+'#'
    你自己试试。