首页 > 解决方案 > 计数字段水晶报表

问题描述

我有一些来自数据库的视图

这里的观点

select main.processId,
main.departmentname as DepartmentName,
dpaudit.DropdownlistName DdlAudit, 
main.PICForAudit,
main.DateOfAudit,
main.ReferenceDetail,
main.finding as Finding,
CASE dpfinding.DropdownlistName WHEN 'RFI' THEN 'X' ELSE '' END AS IsRFi,
CASE dpfinding.DropdownlistName WHEN 'Minor NC' THEN 'X' ELSE '' END AS IsMinor,
CASE dpfinding.DropdownlistName WHEN 'Major NC' THEN 'X' ELSE '' END AS IsMajor,
iird.description as Description,
CASE spdl.DropdownlistName WHEN 'High Priority' THEN 'X' ELSE '' END AS High,
CASE spdl.DropdownlistName WHEN 'Medium Priority' THEN 'X' ELSE '' END AS Medium,
CASE spdl.DropdownlistName WHEN 'Low Priority' THEN 'X' ELSE '' END AS Low,
bc.DropdownlistName as RootCause,
iird.CorrectiveActionPlan,
iird.picResponsibilityName,
iird.TargetDateCompletion,
pos.positionname as Position
from SheAuditMain main 
join IncidentInvestigationRecommendationDescription iird on main.ProcessId = iird.PIDSource
join SheProgramsDropdownlistMenu spdl on spdl.dropdownlistcode = iird.priority
join SheProgramsDropdownlistMenu dpaudit on main.TypeOfAudit = dpaudit.DropdownlistCode 
join SheProgramsDropdownlistMenu dpfinding on main.TypeOfFinding = dpfinding.DropdownlistCode 
join SheProgramsDropdownlistMenu bc on bc.dropdownlistcode = iird.basiccause
join vwusrposOs pos on iird.picResponsibility = pos.positionid

然后我想使用水晶报告创建报告,所以报告看起来像这样

https://ibb.co/eq924T

正如我们所见,优先级 [L,M,H] 的计数不正确,

我首先为此做一些代码,我从每个字段 [L,M,H] 添加运行总字段,然后我在公式中编写代码

例如字段 high 的公式字段,因为 low 和 med 是相同的

Local numberVar i := 0;
Local numberVar TotalHigh := 0;

for i := 0 to {#RTotalHigh} - 1 do   <{#RTotalHigh} coming from running total
    (
    if ({VwCheckPrior.High} = 'X') then
        TotalHigh := TotalHigh + 1
    else 
        0 
     );
TotalHigh  

如何显示正确的计算?

[对不起图片,我之前忘记了我的帐户]

标签: asp.net-mvccrystal-reportscrystal-reports-2008crystal-reports-2010

解决方案


我认为你应该在那种情况下使用 NULL 而不是空字符串(''),因为当你使用空字符串时,它将被计入总数


推荐阅读