Access数据表结构
ID(递增)   时间(Date/Time)      数量(数字,标准)
1          2005-10-01 1:00:00   2
2          2005-10-02 1:00:00   -2
3          2005-10-03 1:00:00   2我在Access用SQL命令
select sum(数量) as 数量1 from flow where 数量>0 and int(时间) between #2005-10-1# and #2005-10-3#
这样输出数量1
3我在Delphi中
adoquery2.close;
adoquery2.sql.clear;
Adoquery2.SQL.Text :='select sum(数量) as 数量1 from flow where 数量>0 and int(时间) between :beginDate and :endDate';
      Adoquery2.Parameters.ParamByName('begindate').value :='#'+FormatDatetime('yyyy-mm-dd',DateTimePicker1.Date)+'#';
      Adoquery2.Parameters.ParamByName('endDate').value :='#'+FormatDatetime('yyyy-mm-dd',DateTimePicker2.Date)+'#';
      adoquery2.open;
      if adoquery2.fieldbyname('数量1').Value<>Null  then
        begin
          str:=ADOquery2.fieldbyname('数量1').value;
        end
      else
        begin
        str:='0';
        end;
出来的数据是0,多次运行后还是0

解决方案 »

  1.   

    Access数据表结构
    ID(递增)   时间(Date/Time)      数量(数字,标准)
    1          2005-10-01 1:00:00   1
    2          2005-10-02 1:00:00   1
    3          2005-10-03 1:00:00   1
      

  2.   

    Adoquery2.SQL.Text :='select sum(数量) as 数量1 from flow where 数量>0 and int(时间) between :beginDate and :endDate';
          Adoquery2.Parameters.ParamByName('begindate').value :=FormatDatetime('yyyy-mm-dd',DateTimePicker1.Date);
          Adoquery2.Parameters.ParamByName('endDate').value :=FormatDatetime('yyyy-mm-dd',DateTimePicker2.Date);
      

  3.   

    Adoquery2.SQL.Text :='select sum(数量) as 数量1 from flow where 数量>0 and int(时间) between :beginDate and :endDate';
          Adoquery2.Parameters.ParamByName('begindate').value :=FormatDatetime('yyyy-mm-dd',DateTimePicker1.Date);
          Adoquery2.Parameters.ParamByName('endDate').value :=FormatDatetime('yyyy-mm-dd',DateTimePicker2.Date);这样行的话我就不来问了,
      

  4.   

    enddate要是datetimepicker2.date+1才行,否则你只查到1号和2 号,没有3 号的记录。
    如:你想查2005-09-01到2005-09-30的记录,你的SQL必需这样:
    select sum(sl) from table where date between #2005-09-01# and #2005-10-01#
      

  5.   

    这个select sum(sl) from table where date between #2005-09-01# and #2005-10-01#
    我都会的,这是sql语句,我想要delphi语句。
    然后我是用int(时间)的
    所以不存在:enddate要是datetimepicker2.date+1才行,否则你只查到1号和2 号,没有3 号的记录
    请高手解答
      

  6.   

    Adoquery2.SQL.Text :='select sum(数量) as 数量1 from flow where 数量>0 and 时间 between :beginDate and :endDate';
          Adoquery2.Parameters.ParamByName('begindate').value :=FormatDatetime('yyyy-mm-dd',DateTimePicker1.Date);
          Adoquery2.Parameters.ParamByName('endDate').value :=FormatDatetime('yyyy-mm-dd',DateTimePicker2.Date);
    把int(时间)改为时间,olddb应该处理的
      

  7.   

    Adoquery2.SQL.Text :='select sum(数量) as 数量1 from flow where 数量>0 and 时间 between :beginDate and :endDate';
      with AdoQuery2.Parameters do
      begin
        ParamValues['beginDate']:=FormatDateTime('yyyy-mm-dd',DateTimePicker1.DateTime);
        ParamValues['endDate']:=FormatDateTime('yyyy-mm-dd',DateTimePicker2.DateTime);
      end;    // with
      ADOQuery2.Open;
    做过试验,可行
      

  8.   

    SQLServer里布尔型是=1来判断,用Delphi来判断Access却是=yes,可php里判断Access又是=1 :( 更晕的是日期,在php里用#来区隔,可Delphi里又是用 ' :$