我想有条件地显示水晶报表。这意味着如果数据库表的字段值= 'true‘,则只显示报表,否则不显示报表。我想保护crystal reports文件不被未经授权的用户访问。如果我没有访问源代码的权限,我如何实现这一点?
发布于 2012-05-10 19:42:36
您将无法限制对Crystal Report的访问,除非托管它的应用程序支持它。如果您有权访问其源代码,则可以编写所需的安全性代码。
否则,您所能做的最好的事情就是限制数据。但是,这可能会使用许可证。
我建议您阅读应用程序文档中的详细说明,看看查看报告是否真的使用了CR许可证。
**编辑**
由于您可以访问源代码,因此只需根据数据库字段的值隐藏/显示生成报告的UI元素。
发布于 2018-02-10 12:03:53
如果应用程序级别的解决方案不可用,请尝试创建一个SQL表达式字段以从数据库表中获取布尔值。No在每个节中放置一个隐藏公式当数据库值为false时,将禁止显示该节。
出于礼貌,您可能希望添加一个包含文本元素“此报告未获得许可”或类似内容的部分,该部分仅在数据库值为true时才会被隐藏。这样,用户就不会认为空白页有误。
发布于 2012-05-11 10:57:52
这可能不是一个答案,但是我们做了一些类似的事情。我们有不同的客户在使用我们的报告应用程序(在C#中完成并使用CR)。我们的大多数报告对我们的所有客户都是可用的,但也有一些客户有自己的报告,这些报告只针对他们的需求,对任何其他客户都没有意义。
我们通过在RPT上设置一些属性来控制这一点。这就是我们要做的。
1)右键单击xyz.rpt文件并转到高级选项卡2)将Keyword属性设置为Customer=123 (这是客户在我们的数据库中的唯一编号)。3)对于通用报表,不设置此属性并将其留空。4)我们的数据库中有一个Reports表,其中有一个名为Customer的列。这用于检查报告是通用的还是特定的。
我认为这不会有任何帮助,但我只是想分享。因为这是我们使用数据库值隐藏和显示报告所做的事情。
https://stackoverflow.com/questions/10531282
复制相似问题