[英]Crystal Reports — filtering data from a database
我有一个连接到数据库的水晶报告。 此信息来自的数据表相当大,我需要知道如何过滤信息。
我的报告中有一个需要一系列要求的字段。 我正在拉出的数据表对我不需要的其他部门提出了所有这些无关紧要的要求。
例如:
我只需要查看NY IT Office服务信息。 我的数据表中的列显示了所有内容,例如厨房服务,洗衣,停车,IT部门信息,最后是Office服务。 有时我从中抽出的条目涉及所有这些部门 - 但我只关心我的部门。
那么我怎样才能在我的字段上放置一个过滤器来显示我需要为我的特定部门看到的内容并且不显示其他信息? 我尝试使用选择编辑器...但似乎我是告诉它不显示厨房服务,例如,它不会显示整个条目(即使我的部门参与)。
我不知道这是否清楚 - 但使用这个该死的公式编辑器的一些帮助将非常感激。
将条件逻辑放入“详细信息”部分的“抑制”部分:
这将停止报告的“详细信息”部分中的输出。 如果您已细分详细信息部分,则必须为每个子部分设置此逻辑。
一个常见的误解我注意到在Crystal Reports中支持这些东西一直认为Suppression / etc需要用IF ... THEN
完全刷新布尔语句IF ... THEN
- 没有必要,你需要的只是要评估的实际语句。
这可以在几乎任何可以放在Crystal Report上的属性上完成。
如果你有8.5之后的任何版本的Crystal,你几乎可以使用你想要的任何SQL作为报表的命令源,从而消除了创建任何数据库对象的必要性。
存储在此需求字段中的内容是什么? 听起来有点像每行有多个值。
编辑:好的,因为该字段确实是多个值,您可以尝试各种各样的事情。
1)如果“办公室服务”绝对是唯一的(例如,“主要办公室服务”以及“办公室服务”没有条目),那么您可以在记录选择公式中使用简单的LIKE:
{tblData.MultipleValueField} LIKE "*Office Services*"
2)如果你不能做出这个假设,那么你可以使用一个数组来分割出值,然后测试是否存在'Office Services':
"Office Services" In Split({tblData.MultipleValueField}, ",")
选项1可能运行得更快,因为过滤器将在服务器端完成,并且将通过网络发送更少的记录。 选项2将涉及Crystal进行过滤和更多网络流量。 我希望其中一个符合您的要求。
您可以通过存储过程访问数据,在其中构建过滤器逻辑。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.