2012-05-10 143 views
-1

我想有条件地显示水晶报表。这意味着如果数据库表的字段值=“真”,而不是仅显示报表,否则不显示报表。我想保护未经许可的用户的水晶报告文件。如果我无法访问源代码,我该如何实现这一目标?显示水晶报表有条件

+0

您是否将Crystal Reports与自定义应用程序(即拥有源代码的应用程序)集成或者是否已通过BusinessObjects Enterprise发布报告?还是另一种机制? – craig

+0

是的,我已经集成了Crystal Reports和VB6。 – hims056

回答

1

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

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

我会建议您阅读应用程序文档上的细小打印以查看查看报告是否确实使用了CR许可证。

**编辑**

既然你有访问源代码,只需隐藏/显示生成的报告的基础上,数据库字段的值的UI元素。

1

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

我们通过对RPT设置几个属性来控制这一点。这就是我们所做的。 2)将Keyword属性设置为Customer = 123(这是我们数据库中客户的唯一编号)。 3)对于报告是通用,此属性未设置并保留为空。 4)我们的数据库中有一个Reports表,名为Customer。这用于检查报告是通用还是特定的。

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

+0

此外,这个问题是为克雷格,队友如何评论像你们这样的问题,而不需要输入你的答案空间。就像你在你的第一个评论有“你有没有集成了一个自定义应用程序的Crystal Reports(即.......” ..我要疯了并且不可能找到它。所以必须使用你的答案空间。 – aMazing

+0

你需要获得声誉才能添加评论。请参阅http://stackoverflow.com/faq#reputation – hims056

2

如果应用程序级解决方案不可用,那么尝试创建一个SQL表达式字段以从数据库表中获取布尔值。不要在每个部分放置抑制公式,抑制数据库值为false时的部分。作为礼节,您可能希望添加一个包含文本元素“此报告未获得许可”的部分或类似的内容,仅当数据库值为true时才会被抑制。这样用户就不会认为空白页出错了。