with adoquery1 do 
  begin
   close;
   SQL.CLEAR
   SQL.ADD(''select count(*)  from 表 where 条件');
   open;
  end;

解决方案 »

  1.   

    var
     Date1,Date2:TDate;
    begin
     Date1:=StrToDate(combobox1.text+'-'+combobox2.text+'-1');
     Date2:=StrToDate(combobox1.text+'-'+combobox2.text+'-1');
     ...
     adoquery1.SQL.Add('select count(*)  from 表 where 日期字段between :tt1 and :tt2');
     AdoQuery1.Params[0]:=Date1;
     AdoQuery2.Params[1]:=Date2;
     ...你的两个日期是一样的啊,直接用  日期字段=:tt1  就好了
      

  2.   

    这个我知道,我只是想知道那句SQL语句哪里有问题,或者说如何去判断两个日期之间!
      

  3.   

    应该这样
    select * from mytable where mydate between #2002-01-01# and #2002-12-30#
    注意#
      

  4.   

    to:oracle_lover(数据库情人)
    我试试看,日期是不一样的!
      

  5.   

    不是类型转化的问题,而是日期表示的问题,combobox会出现日期错误:例如2002-02-30就不对,datetimepicker好点
      

  6.   

    var
    Date1,Date2:TDate;
    Date1:=StrToDate(combobox1.text+'-'+combobox2.text+'-1');
    Date2:=StrToDate(combobox3.text+'-'+combobox4.text+'-1');
    adoquery1.Close;
    adoquery1.sql.Clear;
    adoquery1.SQL.Add('select count(*)  from 表 where 电费年月 between #date1# and #date2#');
    还是错,帮帮小弟!
      

  7.   

    老大,这个应该这样
    最后一句
    adoquery1.SQL.Add('select count(*)  from 表 where 电费年月 between #'+combobox1.text+'-'+combobox2.text+'-1'+'# and #'+combobox3.text+'-'+combobox4.text+'-1'+'#');
    date1,date2不要了!
    看样子你delphi水平刚入门吧!string类型里面怎么用#date1#怎么行?字符串只能str1+str2这么表示,str1+date类型都不匹配.
      

  8.   

    adoquery1.SQL.Add('select count(*)  from 表 where 日期字段 between :tt1 and :tt2');
     AdoQuery1.Params[0]:=Date1;
     AdoQuery2.Params[1]:=Date2;象这样用参数啊
      

  9.   

    adoquery1.SQL.Add('select count(*)  from 表 where 日期字段between '''+combobox2.text+'-1-'+combobox1.text+''' and '''+combobox2.text+'-1-'+combobox1.text+'''');combobox的值是选择年和月,
    請注意:格式一定要是:月-日-年;如果還不行,那就是日期連接符不對,
    你可以參看一下(控制面板里有),有的是'/'之類的
      

  10.   

    还有一个,最好trim(combobox1.text)一下!否则有可能出错.你最好先tmpstr:='select count(*)  from 表 where 电费年月 between #'+combobox1.text+'-'+combobox2.text+'-1'+'# and #'+combobox3.text+'-'+combobox4.text+'-1'+'#';
    然后adoquery1.SQL.Add(tmpstr);可以用一个edit1.text:=tmpstr;
    看看生成的sql语句到底是什么样子!
      

  11.   

    adoquery1.SQL.Add('select count(*)  from 表 where 日期字段 between :tt1 and :tt2');
     AdoQuery1.Params[0]:=Date1;
     AdoQuery2.Params[1]:=Date2;象这样用参数啊字符串的方式也许可以,但不推荐,'2002-8-8'在没有类型转换之前,永远都是字符串,谁也不会把它当成日期。那么你认为一个日期类型的字段和一个字符串比较会有什么结果呢?
      

  12.   

    access中日期格式确实2002-01-01表示,这个没错,我的用户端就是access数据库,没事.当时这个日期类型也让我头大,现在解决了.foreveryday007你没看到人家从1号开始的,所以combobox1.text+'-'+combobox1.text+'-'+'01',这个表示没错.问题出在date1是日期类型,和sql字符串连接不行,直接连接即可,不用转化为date型,直接串起来即可.
      

  13.   

    那就是你只要在两个月之间查询数据了,你是不用日期的, 
    那你可以这样的,在ACCESS中有YEAR 和MONTH这两个函数
    你可以在写的时候用它处理一下,如
    select count(*) from table
    where year(field) between combobox2.text and combobox1.text
    and month(filed) between combobox2.text and combobox1.text
      

  14.   

    不好意思,一点小错
     AdoQuery1.Params[0].AsDate:=Date1;
     AdoQuery2.Params[1].AsDate:=Date2;上面.AsDate掉了
      

  15.   

    access 的日期查询用
    #...#
    我一般把日期设置为文本,长度10
    格式yyyy-mm-dd
    比较方便
    不然判断太麻烦了
      

  16.   

    其实,最简单的方法是使用异常处理,可以屏蔽各种类型的错误,
    然后发现一种就转入一种解决方案,
    try
    ...
    except
    case x of
    1:on ..do
    2:on ..do
    end
    end
    异常的名字也可以在试运行的时候找到,
    我通常都是用这种方法,不用老是去想是什么错误,
    不过,楼上的那些方法我到是非常佩服,
      

  17.   

    长度也不是问题
    delphi+access里面
    2001-1-1和2001-01-01都一样,不会出错!
    njsandman (大师傅) 只是不知道这种情况下日期类型如何表示而已!
      

  18.   

    还想问一下 
    为什么我加上distinct运行就出错呢?比如adoquery1.SQL.Add('select count(distinct 单位名称) as rs from 表 where 电费年月 between #'+combobox1.text+'-'+combobox2.text+'-1'+'# and #'+combobox1.text+'-'+combobox2.text+'-1'+'#');
    因为有时候单位名称会有重复,我不想要重复的单位!
      

  19.   

    还想问一下 
    为什么我加上distinct运行就出错呢?比如adoquery1.SQL.Add('select count(distinct 单位名称) as rs from 表 where 电费年月 between #'+combobox1.text+'-'+combobox2.text+'-1'+'# and #'+combobox3.text+'-'+combobox4.text+'-1'+'#');
    因为有时候单位名称会有重复,我不想要重复的单位!
      

  20.   

    看样子你日期解决了.
    那你后面加上"group by 单位名称"不就可以了吗?这样按照单位group出来.distinct表示要严格唯一.这不是明摆着出错吗!
      

  21.   

    谢了:)
    大嘴,以后多向你请教,能告诉我你的QQ号码吗?我才开始学DELPHI