数据库中资料:日期           凭证号   审核   凭证摘要  辅助核算    科目编号   科目名称     借方           贷方
2006-08-20    记_2    1      001       0       1001      现金      80,000.00
2006-08-20    记_2    1      001       0       1002      银行存款                 80,000.00如何查询出来结果能显示如下,或者有什么控件能直接达到这样的效果:

解决方案 »

  1.   

    我记得fastreport是可以做出这样的报表里.我想好点的grid应该可以做到的.仔细看看一些属性.
      

  2.   

    TStringGrid 应该是做不到
    --
    当然你可以写TStringGrid
      

  3.   

    我用过cxGrid 和dbgrideh但他们只是将某一列中有相同的就合并,合并不能设条件,如还有下列单据也是如此:出库单号               物料类别           物料名称 
    ---------------------------------------- 
    20070001        |     原材料       |     名称1                           第(1)行 
                      |------------------------------ 
                    |     成品         |     名称2                           第(2)行 
    ---------------------------------------- 
                    |     成品         |     名称3                           第(3)行 
                      |                 |------------------ 
    20070002        |                 |    名称4                           第(4)行 
                      |------------------------------ 
                    |     半成品       |     名称5                           第(5)行 
    ---------------------------------------- 大家看到没,第2行和第3行虽然物料类别相同,但是出库单号不同,所以不合并。
    (试过大部分grid的控件可以检测某列合并,如物料类别是成品的都合并了,但恰恰这样就错了,因为不是同一出库单号,在这里如何设置条件让其在某条件下进行合并呢)
      

  4.   

    create table tab(
    日期 datetime,
    凭证号 varchar(10),
    审核 int,  
    凭证摘要 varchar(10),
    辅助核算 int,
    科目编号 varchar(10) ,
    科目名称 varchar(10),
    借方 float,
    贷方 float
    )insert into tab values('2006-08-20', '记_2', 1, '001', 0, '1001', '现金', 80,000.00) 
    insert into tab values('2006-08-20', '记_2', 1, '001', 0, '1002', '银行存款', 80,000.00)
      

  5.   

    select px = identity(int, 1, 1), * into #tmp from tabselect
    日期 =  case 
    when a.[凭证号] = b.[凭证号] then null
    else a.日期
    end,
    凭证号 = case 
    when a.凭证号 = b.凭证号 then null
    else a.凭证号
    end ,
    审核 =  case 
    when a.凭证号 = b.凭证号 then null
    else a.审核
    end ,
    a.凭证摘要,
    a.辅助核算,
    a.科目编号,
    a.科目名称,
    a.借方,
    a.贷方 from #tmp a
    left join #tmp b on a.px = b.px +1
      

  6.   

    结果2006-08-20 00:00:00.000 记_2 1 001 0 1001 现金 80.0 0.0
    NULL NULL NULL 001 0 1002 银行存款 80.0 0.0
      

  7.   

    谢谢bridge05 !这样写进临时表方法可以,在临时表#tmp中的数据显示进grid控件中后,对数据进行操作更新后,就要手动进行提交至tab原始表了,如果要将在临时表中更改的数据批量提交tab中如何进行,能不能简单举例下呀,在此感谢ing!
      

  8.   


    假若你在 tab 加个 自增ID 就不用临时表了 
      

  9.   

    嗯,另外在用CXgrid控制的cellmerging属性对某栏位合同时,能不能再某事件中给予条件让指定的指进行合并呀
      

  10.   

    上楼没明白我的意思,dbgrideh的hideduplicates也一样呀,虽然能让某列相同数据合并,但没有条件的情况下进行相同数据合并不是我想要的
      

  11.   

    最好的最彻底的方法就是用Store procedure