原帖地址: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    )
 要求统计有总共多少台产品。
我用这条语句解决了这个问题.select count(b.eme) from (select count(Model+SampleID) as eme from information group by Model+SampleID) b现在新的问题来了,要如何把结果写如到Edit.text 呢?

解决方案 »

  1.   

    仅供参考:
    var qry: TQuery;
        sqlStr: string;
    begin
      qry := TQuery.Create(nil);
      sqlStr := Your Select Expression;
      qry.SQL.Add(sqlStr);
      qry.Prepare;
      qry.Open;
      if qry.RecordCount > 0 then
        Edit.Text := qry.Fields[0].AsString;
      qry.Close;
      qry.Free;
      

  2.   

    Var
     Qry:TADOQuery
    Begin
     Qry:=TQuery.Create(Nil);
     Try
      Qry.Connection:=Adoconnection;
      With Qry Do
       Begin
       Close;
       Sql.Clear;
       Sql.Text:='';//Your SQL Statement;
       Open;
       Edit1.Text:=Fields[0].Asstring;
      End;
     Finally
     Qry.Free;
     End;
      

  3.   

    谢谢楼上的.可是不行啊.
    procedure TBackup.Button3Click(Sender: TObject);
    begin
    Var Qry:TADOQuery ;
    Begin
     Qry:=TQuery.Create(Nil);
     Try
      Qry.Connection:=Adoconnection;
      With Qry Do
       Begin
       Close;
       Sql.Clear;
       Sql.Text:='select count(b.eme) from (select count(Model+SampleID) as eme from information group by Model+SampleID) b '
       Open;
       Edit1.Text:=Fields[0].Asstring;
      End;
     Finally
     Qry.Free;
     End
    end;
    end.我用的ADO....
      

  4.   

    对不起,上面写错了~
    Var
     Qry:TADOQuery
    Begin
     Qry:=TADOQuery.Create(Nil);
     Try
      Qry.Connection:=Adoconnection;
      With Qry Do
       Begin
       Close;
       Sql.Clear;
       Sql.Text:='';//Your SQL Statement;
       Open;
       Edit1.Text:=Fields[0].Asstring;
      End;
     Finally
     Qry.Free;
     End;
      

  5.   

    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.呵,谢谢大家。改成这样,解决问题了。
      

  6.   

    新问题来了。我在在面版上添加了DateTimePicker1 DateTimePicker2 两个控件。想实现按条件统计,DateTimePicker1  到 DateTimePicker2  时间段内的 统计 怎么写啊?
      

  7.   

    在SQL中加
    Where .... Between ...and ....
      

  8.   

    又是你,谢谢你。SQL我知道写。在DELPHI里怎么写啊?
      

  9.   

    你可以用判断语句来实现:
    If Check1.Value = 1 Then SQl = "and rcsj between '" & Format(DTPicker1.Value, "yyyy年mm月dd日") & Format(DTPicker2.Value, "hh时nn分") & "' and '" & Format(DTPicker3.Value, "yyyy年mm月dd日") & Format(DTPicker4.Value, "hh时nn分") & " and '" & SQl
      If SQl <> "" Then SQl = "where exists (select cph from idyh where cph=ls.cph " & Mid(SQl, 1)