2009-10-12 74 views
1

我有一个连接到数据库的水晶报告。这些信息来自的数据表相当大,我需要知道如何过滤信息。Crystal Reports - 从数据库中过滤数据

我在我的报告中有一个字段需要一个需求列表。我从中拉出的数据表具有我不需要的其他部门的所有这些外部要求。
例如:

我只需要查看NY IT Office的服务信息。我的数据表中的列显示了一切,如厨房服务,洗衣房,停车场,IT部门信息,最后是Office服务。有时候我从这些部门牵涉到的条目 - 但是我只关心我的部门。
那我怎么能在我的领域放置一个过滤器,只显示我需要看到我的具体部门,并不显示其他信息?我尝试过使用选择编辑器......但是,如果我要告诉它不显示厨房服务,它就不会显示整个条目(即使我的部门参与其中)。

我不知道这是否清楚 - 但一些帮助使用这个该死的公式编辑器将不胜感激。

+0

我忘了提及 - 我无法以任何方式编辑数据库!我只有读取权限:( – yeahumok 2009-10-12 21:19:08

+0

我添加了屏幕截图 – 2009-10-13 17:25:54

回答

3

把条件逻辑在细节部分的抑制部分:

  1. 打开节专家
  2. 选择左侧窗格中
  3. 详细部分点击怪异按钮右侧窗格(在“常用”选项卡下)禁止(无向下搜索)选项的权限。通常,按钮上的文本会改变颜色以指示是否存在条件逻辑 - 红色表示存在;蓝色意味着没有。 alt text
  4. 提供布尔语句如果部门不符合您的期望部门

这将在报告的详细资料部分停止输出,以评估为真。如果您细分了细节部分,则必须为每个小节设置此逻辑。

我注意到在Crystal Reports中支持这些东西的一个常见误解是认为Suppression/etc需要完全刷新带有IF ... THEN的布尔语句 - 这不是必需的,您只需要实际的语句进行评估。

这可以在您可以放置​​在Crystal Report上的任何属性上完成。

+0

我不是100%确定你的意思,但是在Suppression选项右边的“怪异的按钮”我没有在我的Select Expert中看到这个---你使用Crystal Reports 10.0吗? – yeahumok 2009-10-13 13:22:26

0

您可以通过存储过程访问数据,并在其中构建过滤器逻辑。

+0

如果他只对数据库具有只读访问权限,那么他只能通过已存在的存储过程访问它 – David 2009-10-12 21:36:29

+0

他的有关访问权限的评论在我回答后添加 – 2009-10-13 13:36:56

1

如果你有水晶的8.5之后任何版本,你可以使用几乎任何你想要的SQL作为命令源的报告,消除创建任何数据库对象的必要性。

存储在此需求字段中的内容是什么?这听起来有点像你每行有多个值。

编辑:好吧,因为外地确实是多个值,还有你可以尝试不同的东西。1)如果'Office Services'确实是唯一的(例如,'Main Office Services'和'Office Services'没有条目),那么你可以在你的记录选择公式中使用一个简单的LIKE :

{tblData.MultipleValueField} LIKE "*Office Services*" 

2)如果你不能做这样的假设,那么你可以使用一个数组中的值拆分出来,然后测试的只是“办公服务”的存在:

"Office Services" In Split({tblData.MultipleValueField}, ",") 

选项1可能会运行得更快,因为过滤器将在服务器端完成,记录数量减少虐待通过网络发送。选项2将涉及Crystal进行过滤和更多网络流量。 我希望其中一个符合您的要求。

+0

我正在使用Crystal Reports 10.0为此,我试图使用他们的SQL表达式编辑器......但它似乎有他们自己的奇怪的语法,我不能拿起它 数据表中的需求列是一个用逗号分隔符连接字段,我只是想让它能够提取我需要的内容,并禁止显示其余的信息 – yeahumok 2009-10-13 13:23:42

+0

SQL Expre SSION公式有点不同,我个人从未发现它们非常有用。查看我的与记录选择公式相关的编辑。 – MartW 2009-10-13 16:04:16