zoukankan      html  css  js  c++  java
  • 动态列报表

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

      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块则改变数字显示颜色.下图是效果图.

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

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

  • 相关阅读:
    java中的 equals 与 ==
    String类的内存分配
    SVN用命令行更换本地副本IP地址
    npoi 设置单元格格式
    net core 微服务框架 Viper 调用链路追踪
    打不死的小强 .net core 微服务 快速开发框架 Viper 限流
    net core 微服务 快速开发框架 Viper 初体验20201017
    Anno 框架 增加缓存、限流策略、事件总线、支持 thrift grpc 作为底层传输
    net core 微服务 快速开发框架
    Viper 微服务框架 编写一个hello world 插件02
  • 原文地址:https://www.cnblogs.com/Geton/p/3798273.html
Copyright © 2011-2022 走看看