有条件地显示Crystal Reports

时间:2012-05-10 09:38:25

标签: security crystal-reports

我想有条件地展示水晶报告。这意味着如果数据库table ='true'的字段值比仅显示报告,则不显示报告。我想保护未经许可的用户的水晶报告文件。如果我无法访问源代码,我该如何实现?

3 个答案:

答案 0 :(得分:2)

如果应用程序级解决方案不可用,请尝试创建SQL表达式字段以从数据库表中获取布尔值。当数据库值为false时,不会在每个部分中设置抑制公式。

作为礼貌,您可能希望添加一个包含文本元素“此报告未获得许可”的部分或类似的部分,仅在数据库值为true时才会被禁止。这样用户就不会认为空白页面出错了。

答案 1 :(得分:1)

您将无法限制对Crystal Report的访问,除非托管它的应用程序支持此操作。如果您可以访问其源代码,那么您可以编写所需的安全性。

否则,您将能够做的最好是限制数据。但是,这可能使用许可证。

我建议您阅读应用程序文档中的细则,以查看查看报告是否确实使用了CR许可证。

**编辑**

由于您可以访问源代码,因此只需根据数据库字段的值隐藏/显示生成报告的UI元素。

答案 2 :(得分:1)

这可能不是一个答案,但我们做的很相似。我们有各种客户使用我们的报告应用程序(在C#中完成并使用CR)。我们的大多数报告都可供所有客户使用,但也有一些客户拥有自己的报告,这些报告仅针对他们的要求,对任何其他客户都没有意义。

我们通过在RPT上设置一些属性来控制它。这就是我们的工作。

1)右键单击xyz.rpt文件,然后转到“高级”选项卡 2)将Keyword属性设置为Customer = 123(这是我们数据库中客户的唯一编号。) 3)对于Generic的报告,此属性未设置并保留为空。 4)我们的数据库中有一个Reports表,其中包含一个名为Customer的列。这用于检查报告是通用的还是特定的。

我认为这不会有任何帮助,但我只是想分享。因为这是我们使用数据库值隐藏和显示报告的方法。