-1

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

4

3 回答 3

2

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

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

于 2018-02-10T04:03:53.217 回答
1

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

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

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

** 编辑 **

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

于 2012-05-10T11:42:36.243 回答
1

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

我们通过在 RPT 上设置一些属性来控制这一点。这就是我们所做的。

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

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

于 2012-05-11T02:57:52.040 回答