adoquery1.sql.text:='select * from 数据库 where time>:Date1 and time<:Date2';
adoquery1.Parameters.ParamByName('Date1').Value := xf_date1.Date;
adoquery1.Parameters.ParamByName('Date2').Value := xf_date2.Date;
adoquery1.Open;

解决方案 »

  1.   

    如果是连Accsee 必须是 date < #2000-1-1#
    我前几天也碰上这个问题
    实在不行
    Format(' date < %f ',[xf_date.date]);
      

  2.   

    to : chechy(我爱洁洁) 
    谢谢你的代码,不过还是报错:标准表达式中数据类型不匹配
    (我的time字段的数据结构为"日期/时间",格式为"短日期"如1999-2-5)
    是不是ACCESS的日期数据类型和DateTimePicker有区别?to:  xxx_20_02(zz) 
    能否给出详细的代码,我是用DateTimePicker获取动态日期,而不是静态的:date < #2000-1-1# 
    谢谢
      

  3.   

    老兄,建议日期在存储时用字符串格式,SQL语名中对日期按字符串来比较。以前我也被日期查询搞得头大,现在用字符串格式的日期后好办多了。
      

  4.   

    adoquery1.sql.text:=format('select * from 数据库 where time>%s and time<%s', [QuotedStr(DateTimeToStr(xf_date1.date)) ,QuotedStr(DateTimeToStr(xf_date1.date))]); 
      

  5.   

    adoquery1.sql.text:='select * from 数据库 where time>#'+DateTimeToStr(xf_date1.date)+'# and time<#'+DateTimeToStr(xf_date1.date)+'#';
      

  6.   

    adoquery1.sql.text:='select * from 数据库 where time>'+QuotedStr(DateTimeToStr(xf_date1.date))+' and time<'+QuotedStr(DateTimeToStr(xf_date1.date))+'';
      

  7.   

    1、用Query的参数,哪里都是对的,不论什么数据库。
    2、因为是Access,所以用#在日期前后,应该也是对的。
    你这里报错,完全是你的错误的。因为你其他代码也有问题,这个现在谁也帮不了你。
      

  8.   

    谢谢大家的回复,终于成功了,语句如下:
    adoquery1.sql.text:='select * from 数据库 where time between #2002-3-5# and #2002-3-10#';
    不过只实现静态查询,利用DateTimePicker的动态查询还没有实现!!
    请问如何将上述语句改为动态查询?我查了一下ACCSEE的帮助,其中有一段话:使用自定义格式,可以根据所输入数的正负性,在年代之前显示“A.D.”或在年代之后显示 “B.C.”。若要查看该自定义格式是如何工作的,请新建一个表字段,将数据类型设置为“数字”,并输入如下的格式:"A.D. " #;# " B.C."正数将在年代之前显示“A.D.”。负数则在年代之后显示“B.C.”。
      

  9.   

    成功了,终于成功了,语句如下:adoquery1.sql.text:='select * from 消费 where 日期 between #'+DateToStr(dtp_date1.date)+'# and #'+DateToStr(dtp_date2.date)+'#';谢谢大家,散分!散分!