Reporting services_SSRS报表开发实战笔记

此笔记记录使用SQL Server Reporting Services过程中一些比较使用的功能

1. 柏拉图

  • 柱形图序列值为:=Fields!销量.Value
  • 线形图序列值为:=RunningValue(Fields!销量.Value,Sum,"dsMain")

  • 若折线图要显示为比例,则序列值设置为:

  • =RunningValue(Fields!销量.Value,Sum,"dsMain") / Sum(Fields!销量.Value,"dsMain")

  • 其中"dsMain"为作用域。如果要按员工分组查看每个员工的销量,按此处填写分组的名字,如User_Group

  • 作用域的每个新实例 RunningValue 的值都会重置为 0。 如果指定组,则会在更改组表达式时重置该运行值。 如果指定数据区域,则会为该数据区域的每个新实例重置该运行值。 如果指定数据集,则不会在整个数据集中重置该运行值。

  • 详细可参见MSDN用法说明 报表生成器函数 - RunningValue 函数

2. 引用单元格值

  • 使用ReportItems.XXX.Value

3. 检查报表订阅失败,并邮件通知

  • 可在程序中使用以下SQL,查询出失败的订阅,再发送出来:
SELECT S.SUBSCRIPTIONID,CL.PATH, CL.NAME,S.Description,S.INACTIVEFLAGS, S.LASTSTATUS,S.LASTRUNTIME 
FROM CATALOG AS CL,REPORTSCHEDULE  AS RS,SUBSCRIPTIONS S 
WHERE CL.ITEMID = RS.REPORTID AND RS.SUBSCRIPTIONID = S.SUBSCRIPTIONID AND S.INACTIVEFLAGS = 0
  • 发送邮件效果如下

  • 产生邮件body
LogUntil.LogInfo("发送邮件通知");
StringBuilder sbMailContent = new StringBuilder();
string temp = "";
sbMailContent.Append(@"
<div>
    <span style='font - family: verdana, arial, sans - serif; font - size: 11px;'>
        Hi:all
          <br/>
          &nbsp&nbsp&nbsp&nbsp报表订阅邮件发送状态异常,详情如下:
          <br/>
    </span>
</div>
<table style='font-family: verdana,arial,sans-serif; font-size: 11px; color: #333333; border-width: 1px; border-color: #666666; border-collapse: collapse;'>
    <tr>
        <th style='border-width: 1px; padding: 8px; border-style: solid; border-color: #666666; background-color: #dedede;'>Subscription Id</th>
        <th style='border-width: 1px; padding: 8px; border-style: solid; border-color: #666666; background-color: #dedede;'>Path</th>
        <th style='border-width: 1px; padding: 8px; border-style: solid; border-color: #666666; background-color: #dedede;'>Name</th>
        <th style='border-width: 1px; padding: 8px; border-style: solid; border-color: #666666; background-color: #dedede;'>Description</th>
        <th style='border-width: 1px; padding: 8px; border-style: solid; border-color: #666666; background-color: #dedede;'>Last Status</th>
        <th style='border-width: 1px; padding: 8px; border-style: solid; border-color: #666666; background-color: #dedede;'>Last Runtime</th>
    </tr>");
foreach (DataRow error in drErrors)
{
    temp = @"<tr>
        <td style='border-width: 1px; padding: 8px; border-style: solid; border-color: #666666; background-color: #ffffff;'>#SubscriptionId#</td>
        <td style='border-width: 1px; padding: 8px; border-style: solid; border-color: #666666; background-color: #ffffff;'>#Path#</td>
        <td style='border-width: 1px; padding: 8px; border-style: solid; border-color: #666666; background-color: #ffffff;'>#Name#</td>
        <td style='border-width: 1px; padding: 8px; border-style: solid; border-color: #666666; background-color: #ffffff;'>#Description#</td>
        <td style='border-width: 1px; padding: 8px; border-style: solid; border-color: #666666; background-color: #ffffff;'>#LastStatus#</td>
        <td style='border-width: 1px; padding: 8px; border-style: solid; border-color: #666666; background-color: #ffffff;'>#LastRuntime#</td>
    </tr>";
    sbMailContent.Append(temp.Replace("#SubscriptionId#", error["SUBSCRIPTIONID"].ToString()).Replace("#Path#", error["PATH"].ToString())
        .Replace("#Name#", error["NAME"].ToString()).Replace("#Description#", error["Description"].ToString()).Replace("#LastStatus#", error["LASTSTATUS"].ToString())
        .Replace("#LastRuntime#", error["LASTRUNTIME"].ToString()));
}
sbMailContent.Append("</table>");
string result = sendMail(sbMailContent.ToString());
if ("success".Equals(result))
{
    LogUntil.LogInfo("邮件发送成功");
}
else
{
    LogUntil.LogError(string.Format("邮件发送失败:{0}", result));
}

4. 报表订阅时,在生成的文件名中保存日期

为每个传递创建唯一的文件的另一种方法是在文件名中包含时间戳。 

若要执行此操作,请将“@timestamp”变量添加到文件名中(例如,CompanySales@timestamp)。 

导出文件名效果如下:

注:修改文件名仅在传递方式为Windows文件共享时可以,发送到电子邮件则无法修改文件名。

5. 数据驱动订阅

可以根据自定义数据集,订阅不同的邮件/文件发送

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值