示例数据如下:
ID  XSDH LBH SPMC 
1    001  1   商品1
2    001  2   商品2
3    001  3   商品3
4    002  1   商品1
5    002  2   商品5
现在想形成以下表格(使用DBGRIDEH):
ID  XSDH LBH SPMC 
1    001  1   商品1
2         2   商品2
3         3   商品3
4         1   商品1
5         2   商品5

解决方案 »

  1.   

    上面排版有问题:想形成以下表格:
    ID  XSDH LBH SPMC 
    1    001  1  商品1 
    2          2  商品2 
    3          3  商品3 
    4    002   1  商品1 
    5          2  商品5 
    请问如何做到?
      

  2.   

    那你最好把它弄到StringGrid中,这样你些怎么改就怎么改,在DBGrid改动的话,连数据表里的内容一块就改了
      

  3.   

    刚才没看清,你要打印,那你在QuickReport的要求数据事件中对数据加工后,再进行打印
      

  4.   

    你看下 dbgrideh 的DEMO,有这个功能.
      

  5.   

    楼上的,那个DEMO啊.我没有看到这个实现功能的DEMO啊.
      

  6.   

    FastReport打印的时候有这个功能,按我的理解,DBGridEh是不可能的,它和DBGrid一样,都是数据感知控件,你改的话,等于改的数据库,不过可以用临时表的方法来实现,临时表里,你不就想怎么处理怎么处理了
      

  7.   

    有个思路 如果你的数据有以上的规律应该可以这么做
    写个 for 循环 检查 dataset 的 LBH 如果不为 1 就把 该行 XSDH 设为空''
      

  8.   

    这个容易,LZ应该看得懂吧...报表设计时,通常内容是这样:[frxDBDataset1."xsdh"] ,现修改为变量类型[xsdh],这样就可以打印时再给值然后在GetValue事件中写: var kaikai_kk:string; {private全局变量,要初始化}procedure TForm6.frxReport1GetValue(const VarName: String;
      var Value: Variant);
    beginif uppercase(VarName)='XSDH' then
      if ADoquery1.FieldByName('XSDH').AsString<>kaikai_kk then 
          Value=ADoquery1.FieldByName('kk').AsString
       else
          Value:='';
    end;
      

  9.   

    有点失误,修改一下,具体情况,自己变通一下: var kaikai_kk:string; {private全局变量,要初始化}procedure TForm6.frxReport1GetValue(const VarName: String;
      var Value: Variant);
    beginif uppercase(VarName)='XSDH' then
      if ADoquery1.FieldByName('XSDH').AsString<>kaikai_kk then 
          Value=ADoquery1.FieldByName('XSDH').AsString
       else
          Value:='';
    end;
      

  10.   

    不好意思,发送的太快了,最后一次修正: var kaikai_kk:string; {private全局变量,要初始化}procedure TForm6.frxReport1GetValue(const VarName: String;
      var Value: Variant);
    beginif uppercase(VarName)='XSDH' then
      if ADoquery1.FieldByName('XSDH').AsString<>kaikai_kk then 
         begin
          Value=ADoquery1.FieldByName('XSDH').AsString
          kaikai_kk:=ADoquery1.FieldByName('XSDH').AsString;
         end;
       else
          Value:='';
    end;
      

  11.   

    用了字段的GETTEXT属性解决了问题.
    多谢以上的朋友热心.