原帖地址:http://community.csdn.net/Expert/topic/5109/5109248.xml?temp=.6185114表(information) 内结构及内容如下:
表用来存放产品抽样结果入库 :即对产品抽样结果入库。 如下例。我们总共抽样产品为 233(63471010) ,221E(63470010) 231(63471010)  233(63470018)   数目总共四台。入库结果如下: 
           ID Model(产品型号)  SampleId()   fault(缺陷)    point(分数) 
              233              63471010       A             100
              233              63471010       B              50   两处缺陷 分别为A类,B类缺陷。              233              63470018       A             100  (另外一台编号为63470018 型号为233的产品)
              
              221E             63470010       C              10
              221E             63470010       A              100
              
              231              63471010       B              50
             
如果采用产品编号统计 ,可能会出现编号一样但型号不同的产品。如上列如采取编号统计: 其结果为 3。 ( 63471010  ,63470018 , 63470010    )
 要求统计有总共多少台产品。
我是这样解决了问题.procedure TBackup.Button3Click(Sender: TObject);
var
  sSQL:string;
begin  sSQL := 'select count(b.eme) from (select count(Model+SampleID) as eme from information group by Model+SampleID) b ';with adoQuery1 do
  begin
    Close;
    SQL.Text := sSQL;
    Open;    if not Eof then
      Edit1.Text := Fields[0].AsString;
    Close;
  end;
end;
end.但是我现在有想添加 两个条件方面的查询。
我在在面版上添加了DateTimePicker1 DateTimePicker2 两个控件。想实现按条件统计,统计 DateTimePicker1  到 DateTimePicker2  时间段内的 统计数据。 这个怎么写啊。知道是在 SQL 语句中添加 个条件语句。 比如 Where .... Between ...and .... 但是具体怎么写,有点困惑了,还请高手解答!!!var low,high:string;   low:=formatdatetime('yyyy-mm-dd',DateTimePicker1.Date);
   high:=formatdatetime('yyyy-mm-dd',DateTimePicker2.Date);
后面不知道怎么写了~~~~~~~~~~~

解决方案 »

  1.   

    表里有没有时间字段阿?
    假设有就这样写
    'where (time between '''+datetostr(DateTimePicker1)+''' and '''+datetostr(DateTimePicker2)+''')'
      

  2.   

    sSQL := ' Select Count(B.eme) '+
            ' From '+
            ' (Select Count(Model+SampleID) as eme '+
            '  From Information '+
            '  Where DateDiff(Day, Time, '+''''+Low+''''+') <= 0 And '+
            '        DateDiff(Day, Time, '+''''+High+''''+') >= 0  '+
            '  Group By Model+SampleID) B ';
      

  3.   

    sSQL := ' Select Count(B.eme) '+
            ' From '+
            ' (Select Count(Model+SampleID) as eme '+
            '  From Information '+
            '  Where time>='''+low+''' And time<='''+High+'''+
            '  Group By Model+SampleID) B ';
      

  4.   

    对了,有个时间字段: workdate
    可是还是编译不过啊!!!
      

  5.   

    时间字段把时间字段加进去 把它从datetimetostr 转换转换加到数据库里面去 ~
      

  6.   

    我的好像落东西了,改了先
    'where (time between '''+datetostr(DateTimePicker1.datetime)+''' and '''+datetostr(DateTimePicker2.datetime)+''')'
      

  7.   

    非常感谢楼上所有朋友 ,我语句改成了这样问题已经得到了解决。 sSQL := ' Select Count(B.eme) '+
            ' From '+
            ' (Select Count(Model+SampleID) as eme ' +
            '  From Information ' +
            '  Where workdate<= #'+high+'#  And '   +
            '  workdate>= # '+low+'#   '  +
            '  Group By Model +SampleID) B ';
    顺便提个新问题。
    如何把dbgrideh footers SUM 的值放入到Edit.text 中
       字段      id   model  point             1    433w    100
                  
                 2    432w    100                         3    452w    10
     
                             210     我用dbgrideh footer 的SUM 得到了结果,能不能把结果同时也放到Edit.txt 中呢?
                        
      

  8.   

    Edit1.text:=dbgrideh1.Columns[7].Footers[0].Value  ???肯定是有什么属性要设置。恳请大家帮帮我!!!!