本人需要在某grid中将某一条件下的相同字段栏位进行合并,现在用的是cxgrid,不知如何进行?
如:
   1      A001  2   6
   2-1    A002  5   5
   2-2    A002  3   5想显示如下结果:   1      A001  2   6   2-1          5   
          A002      10
   2-2          3      

解决方案 »

  1.   

    关键是要显示出来这个效果,查询语句能做到显示至grid中这样的效果??请明示下
      

  2.   

    查询语句可以剔除重复的值。
    在控件里面,不好处理,要处理,我这里有个笨办法供你参考,别吐口水。
    1.做数据库直接查询语句,商品进销存为例子。
    //这个按名称顺序排序很重要,因为你要剔除重复的名称只显示一次。
    adoQuery.SQL.Text:='Select 名称,数量,单价,金额 From 销售表 Order By 名称' 
    比如结果是:这个结果一定要按名称排序,以便进行下一步处理。
    长虹彩电   1  3000 3000
    长虹彩电   2  2800 5600
    长虹彩电   5  2500 12500
    金立手机   1  1500 1500
    金立手机   2  1400 2800
    南浮电池   10 5    502。用中间临时数据集过渡装载数据,装载数据的时候,对同个字段重复的值,第二次出现在一个记录的时候,让其为 NULL
    while not adoquery.eof do
      

  3.   

    var上一个用过的商品名 : AnsiString;
    var上一个用过的商品名:='';//初始化为空
    while not adoquery.eof do 
       begin
       varClientDataSet.Append;
       if var上一个用过的商品名<>adoquery商品名.AsString then
           varClientDataSet商品名.AsString:=adoquery商品名.AsString;//如果添加的记录商品名和上次添加的不同,就添加,否则不添加   var上一个用过的商品名:=adoquery商品名.AsString;//记录本次记录添加商品的名称
       varClientDataSet数量.AsInteger:=adoquery商品名.AsInteger;
       varClientDataSet单价.AsFloat:=adoquery商品名.AsFloat;   
       varClientDataSet金额.AsFloat:=adoquery商品名.AsFloat;
       varClientDataSet.Post;
       adoquery。Next;
       end;3。然后把这个ClientDataSet通过DataSource连接到DBGrid上,效率低了点,起码视觉效果可以达到你的要求