• 动态列报表


            由于在项目中需要用到动态列,类似下图效果,其中列和行都是动态产生的.起初接到这个要求,觉得有点难度,但有问题了应该迎难而上,在仔细研究及细细摸索下,却发现也不会太难,现写下此博客,希望对有此需要的朋友起到一定的帮助.

      2014-06-01 2014-06-02 2014-06-03 2014-06-04 2014-06-05 2014-06-06 2014-06-07 2014-06-08 2014-06-09
      12:37 8.00 08:03 4.00 08:06 2.00 08:07 2.00 08:00 2.00 08:10 2.00 07:59 2.00 08:03 4.00 08:01 2.00
          12:38 5.00 12:32 8.00 12:36 8.00 12:32 8.00 12:37 8.00 08:11 3.80 12:33 5.00 08:10 10.30
                          12:48 7.00 12:31 8.00 12:43 7.00 12:35 5.00
    日消费   8.00   9.00   10.00   10.00   10.00   17.00   13.80   16.00   17.30

     由于以前做过水晶报表和SSRS报表,个人认为此种情况下还是SSRS报表做起来比较方便. 但想到提出要求的数据存储在SQL2000服务器上,这里又存在一个问题,就是如何给分组编一个行号. 但办法总比问题多.努力了总会有收获.现将代码帖下,当然,如果是SQL2005或以后的版本用 row_number() over (partition by xxx order by kkkk) 就方便多得多了.以下是该项目涉及到的SQL代码.

    Create table #AllData
    (
    RID int identity(1,1),
    CDate varchar(10) not null,
    ConsumeTime varchar(5) not null,
    CardNo varchar(10),
    Suser varchar(7),
    Name varchar(20),
    Dept varchar(40),
    ConsumeSum money,
    Balance money,
    ByWho varchar(10)
    )
    insert into #AllData 
    (CDate,ConsumeTime,CardNo,Suser,Name,Dept,ConsumeSum,Balance,ByWho)
    select
    convert(varchar(10),FEE.消费时间,121),
    convert(varchar(5),FEE.消费时间,108),FEE.卡号,FEE.工号,SUSER.姓名,SUSER.部门,FEE.消费金额,FEE.卡上余额,FEE.经手人
    FROM 收费表 FEE with (nolock),发行表 SUSER with (nolock)
    WHERE FEE.卡号=SUSER.卡号 AND
    FEE.工号=SUSER.工号    AND
    (SUSER.工号 between @SUSER1 and @SUSER2    ) AND
    (FEE.消费时间 BETWEEN @dt1  AND @dt2)    AND
    FEE.消费金额<>0
    ORDER BY SUSER.部门,SUSER.工号,FEE.消费时间
    
    -- 以下这里是sql2000实现分组行号的办法,请记住
    -- 
    select (select count(*) from #AllData as b where a.CDate=b.CDate and a.RID>=b.RID) AS GRID, a.*
    from #AllData as a

    然后就是在SSRS中设计此报表,SSRS其实还有很多高级功能可以丰富报表,体高用户体验. 在这里就不在赘述,现帖出设计图案.以下箭头所指地方需要多多留意.

    只要按这种形式设计相应字段栏位即可. 这里设置单笔超过10块,日消费超过12块则改变数字显示颜色.下图是效果图.

    然后可以设计订阅此报表,每天定时运行发送到相应的人的邮箱中去.

    配置图,以及发到邮箱结果.

  • 相关阅读:
    一只特立独行的猪
    每天写出好代码的5个建议
    电脑修好了
    VB编程修改AutoCAD长度型尺寸标注
    前天我放学回家
    VB编程修改AutoCAD坐标型尺寸标注
    VB编程操作AutoCAD尺寸标注样式
    这是一个错误的程序
    2011年6月27日星期二
    2011年6月20日星期一
  • 原文地址:https://www.cnblogs.com/Geton/p/3798273.html
Copyright © 2020-2023  润新知