使用存储过程有条件地格式化我的 HTML 报告?

Posted

技术标签:

【中文标题】使用存储过程有条件地格式化我的 HTML 报告?【英文标题】:Conditionally format my HTML report using stored procedures? 【发布时间】:2021-10-06 17:29:27 【问题描述】:

我使用 SQL Server 存储过程和 html 开发了这段代码,以发送一个检查数据差异的自动报告,但我想在 delta 列中突出显示不等于 0 的数字。有没有办法用红色(例如)突出显示零,用绿色突出显示非零?

I have attached the report here with the part highlighted in yellow that needs to be highlighted by HTML conditional formatting

SET @tableHTML1 = 
    + N' <p>This report is driven by <b>DWQC.dbo.mwsp_QC_EM_LS_EPMS_DAILY_CHECK  </b> stored procedure.
            Each METRIC in the QC is compared between the Source,House and Mart databases,  
            and the resulting delta is displayed </p>'
     
    +N'<style type="text/css">' + N'.tg  border-collapse:collapse;border-spacing:0;border-color:#aaa;'
    + N'.tg tdfont-family:Arial, sans-serif;font-size:14px;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#aaa;color:#333;background-color:#fff;'
    + N'.tg thfont-family:Arial, sans-serif;font-size:14px;font-weight:normal;padding:10px 5px;border-style:solid;border-width:1px;overflow:hidden;word-break:normal;border-color:#aaa;color:#fff;background-color:#808080;'
    + N'.tg .tg-9ajhfont-weight:bold;background-color:#808080' + N'.tg .tg-hgcjfont-weight:bold;text-align:center'
    + N'</style>' -- contains all the styling for the HTML report
    + N'<table class="tg">'  -- calls the table to included in the report
    + N'<th class="tg-hgcj">CHECK_ID </th>'
    + N'<th class="tg-hgcj">CHECK NAME </th>'
    + N'<th class="tg-hgcj">SOURCE_COUNT</th>'
    + N'<th class="tg-hgcj">TARGET_COUNT</th>'
    + N'<th class="tg-hgcj">DELTA</th>' 
    + N'</tr>'   
    + CAST ( (select  -- checks for columns that could be seen in attached report
                td=CHECK_ID,'',
                td=CHECK_NAME,'',   
                td=SOURCE_COUNT,'', 
                td=TARGET_COUNT,'', 
                td=DELTA,'' 
            from( Select top 1000
            isnull(CHECK_ID,0) as CHECK_ID,     
            isnull(CHECK_NAME,0) as CHECK_NAME, 
            isnull(SOURCE_COUNT,0) as SOURCE_COUNT, 
            isnull(TARGET_COUNT,0) as TARGET_COUNT, 
            isnull(DELTA,0) as DELTA 
            from #table  --contains the data to be used in the report; temporarily naming it "table"
            order by RID)Q
                    FOR XML PATH('tr'),
                     TYPE
                    ) AS NVARCHAR(MAX))
                    + N'</table>' 

提前致谢!!

【问题讨论】:

使用 CSS 背景色? 这是大错特错...... SQL Server 内置了一个报告引擎,使用它而不是重新发明你自己的科学怪人的报告怪物。 有没有办法做到这一点 - 你没有说你想要 那个 是什么 - 只有你知道你希望它如何显示- 带有闪烁边框的 50pt 发光文本?如果您构建 HTML 格式的输出,将其与您的查询分开,这可能是一个好主意。 使用报告引擎很简单,但我需要在我的 ETL 工作完成后立即启动这些过程。所以我将这些过程与 ETL 作业集成在一起。 编辑了我的问题@Stu 【参考方案1】:

..

td=TARGET_COUNT,'', 
[td/@class]=case when DELTA > 0 then 'highlightmeclass' end, 
 -- Or… [td/@bgcolor]= case when DELTA > 0 then 'yellow' end,
td=DELTA,'' 

..

【讨论】:

这对我不起作用。你怎么称呼这个概念?也许我可以学习和尝试案例。 ..@DR222 ..edit 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。您可以在帮助中心找到更多关于如何写好答案的信息:***.com/help/how-to-answer。祝你好运?

以上是关于使用存储过程有条件地格式化我的 HTML 报告?的主要内容,如果未能解决你的问题,请参考以下文章

我的 SQL 存储过程中的 HTML 格式化语法无法正常工作

有条件地评估条件 SQL

Xcode 错误地报告 Swift 访问竞争条件

有条件地格式化 HTML 表格值

如何根据 s-s-rS 中单独字段的值有条件地格式化整行的文本颜色?

如何在 oracle 中将 select 与 if 条件一起用于不同的表,而不是编写函数或存储过程?