有一报表的两个字段
  单位   数量
  ---   ---
  KG    50
  PCS   100
  支    60
  KG    30
  组
    .
    .
    ....   要求将数量按单位来累加保存两个数组中!
   最后用来打印出来成一个字符串!

解决方案 »

  1.   

    select Sum(NumberFieldName) as Number from table  group by DanweiField
      

  2.   

    一个也行!只要能累加出来!不过不是用SQL语句!
      

  3.   

    K,气死了,刚刚写上去,一点回复,它什么也不见了。。
    var
      Form1: TForm1;
      DWArray : Array of String;
      SLArray : Array of String;implementation{$R *.dfm}procedure TForm1.FormDblClick(Sender: TObject);
    var
      Index : Integer;
    begin
      With DataSet do
      begin
        if Active then
          Active := False;
        SQL...
        ..
        Open;
        First;
        if RecordCount > 0 then
        begin
          Index := 0 ;
          SetLength(DWArray , RecordCount);
          SetLength(SLArray ,RecordCount);
          While Not Eof do
          begin
            DWArray[Index] := FieldByName('DWFieldName').AsString;
            SLArray[Index] := FieldByName('SLFieldName').AsString;
            Inc(Index);
            Next;
          end;
        end;
      end;
    end;Procedure...
    var
      Index : Integer;
      StringValue : String;
    begin
      For Index := Low(DWArray) to High(DWArray) do
      begin
        StringValue := DWArray[Index] + SLArray[Index]....//进行操作;
      end;
    end;
      

  4.   

    依次比较A1中是否有相同的值, 如A1[1]和A1[3]相同,则删除A1[3],(不是直接删), 然后
    A2[1] := A2[1] + A2[3], 删除A2[3] . 依次到A1没有相同的值. 
    依次加入 A1和A2中对应的值即可
      

  5.   

    sA : Array of String ;
      i : Integer ;
      s : String ;  i := 0 ;
      with TADOQuery.Create(Nil) do
      begin
        ConnectionString := ... ; / Connection := ADOConnection1 ;
        Sql.Text := 'select Sum(NumberFieldName) as Number from Table Group by DanweiField' ;
        Open ;
        First ;
        SetLength(sA,RecordCount) ;
        while Not Eof do
        begin
          sA[i] := FieldByName('Number').AsString ;
          s := s + ' ' + sA[i] ;
          Inc(i) ;
          Next ;
        end ;
        Free ;
      end ;
      //使用这个数组,用完后释放 FreeMem(sA) ;
      ShowMessage(s) ; // 最后用来打印出来成一个字符串!  //手写没有测试
      

  6.   

    这个破网,我贴了十多次,每次一点回复就出错;
    害的我重写了两次。FileName ;//给它给值的时候,就会执行打开文件操作;
    K,气死了,刚刚写上去,一点回复,它什么也不见了。。
    var
      Form1: TForm1;
      DWArray : Array of String;
      SLArray : Array of String;implementation{$R *.dfm}procedure TForm1.FormDblClick(Sender: TObject);
    var
      Index : Integer;
    begin
      With DataSet do
      begin
        if Active then
          Active := False;
        SQL...
        ..
        Open;
        First;
        if RecordCount > 0 then
        begin
          Index := 0 ;
          SetLength(DWArray , RecordCount);
          SetLength(SLArray ,RecordCount);
          While Not Eof do
          begin
            DWArray[Index] := FieldByName('DWFieldName').AsString;
            SLArray[Index] := FieldByName('SLFieldName').AsString;
            Inc(Index);
            Next;
          end;
        end;
      end;
    end;Procedure...
    var
      Index : Integer;
      StringValue : String;
    begin
      For Index := Low(DWArray) to High(DWArray) do
      begin
        StringValue := DWArray[Index] + SLArray[Index]....//进行操作;
      end;
    end;