Chr☆s Kwok 的技术笔记

.NET, C#, WPF, WCF, WF, .NetCore & LINQ ... I know how it works because I know why it works ...

博客园 首页 新随笔 订阅 管理

  笔者使用ReportingServices定义了一个顾客购买金额报表(按顾客类型及其地域分组汇总),筛选条件为存在消费金额的顾客。在筛选条件如下设置:

结果打开SQL的事件探查器抓到如下的SQL:


很明显红色框出的部分语句出现问题: 要求获取消费总额不为0且不为空的记录(该条件肯定永远满足:当为0时必然不为null,但为null时必然不为0,若存在具体金额则可能不为0且不为null,因此该条件想到于true),因此得到的结果将包含没有消费额的顾客,这不符合我们的预期(应该是ReportingServices的一个Bug)。结果如下:

那怎么办呢?没办法只好将筛选条件修改如下:

此时再次启动SQL事件探查器,获得如下生成的SQL(包括允许结果:这时我们看到结果正确了)。

所以应该是报表服务器在对.rdl文件定义的筛选条件翻译成SQL语句时出现了问题。

posted on 2008-11-20 17:01  Chr☆s  阅读(375)  评论(0编辑  收藏  举报