-1

Crystal レポートを条件付きで表示したい。つまり、データベース テーブルのフィールド値 = 'true' の場合、レポートのみを表示し、それ以外の場合はレポートを表示しません。ライセンスのないユーザーから Crystal レポート ファイルを保護したいと考えています。ソースコードにアクセスできない場合、どうすればこれを達成できますか?

4

3 に答える 3

2

アプリケーション レベルのソリューションが利用できない場合は、SQL 式フィールドを作成して、データベース テーブルからブール値を取得してみてください。データベース値が false の場合、セクションを非表示にするすべてのセクションに非表示式を配置しません。

便宜上、「このレポートはライセンスされていません」などのテキスト要素を含むセクションを追加することをお勧めします。これは、データベースの値が true の場合にのみ抑制されます。こうすることで、ユーザーは空白のページが間違っているとは思わなくなります。

于 2018-02-10T04:03:53.217 に答える
1

Crystal Reportをホストするアプリケーションがこれをサポートしていない限り、CrystalReportへのアクセスを制限することはできません。ソースコードにアクセスできる場合は、必要なセキュリティをコーディングできます。

それ以外の場合、実行できる最善の方法はデータを制限することです。ただし、これはおそらくライセンスを使用します。

アプリケーションのドキュメントの詳細を読んで、レポートの表示で実際にCRライセンスが使用されているかどうかを確認することをお勧めします。

** 編集 **

ソースコードにアクセスできるので、データベースフィールドの値に基づいて、レポートを生成するUI要素を非表示/表示するだけです。

于 2012-05-10T11:42:36.243 に答える
1

これは答えではないかもしれませんが、私たちは似たようなことをしています。レポートアプリケーションを使用しているさまざまなクライアントがいます(C#で実行され、CRを使用しています)。当社のレポートのほとんどはすべてのお客様が利用できますが、一部のお客様は独自のレポートを所有しており、そのレポートは要件のみに固有であり、他のお客様には意味がありません。

これは、RPT にいくつかのプロパティを設定することで制御します。これが私たちの仕事です。

1) xyz.rpt ファイルを右クリックし、[詳細設定] タブに移動します。 2) Keyword プロパティを Customer=123 に設定します (これは、データベース内の顧客の一意の番号です)。 3) 一般的なレポートの場合、このプロパティはありません。設定して空のままにします。4) データベースには、Customer という名前の列を持つ Reports テーブルがあります。これは、レポートが一般的か特定的かを確認するために使用されます。

参考にならないと思いますが、シェアしたいと思います。これは、データベース値を使用してレポートを非表示および表示するために行うことだからです。

于 2012-05-11T02:57:52.040 に答える