他に考えられる例として、一定のユーザーにレポートの表示は許可するものの、データが格納されている場所についての情報や特別な権限は与えないようにする場合があります。
C1Report では、2つの簡単な方法でこのようなセキュリティを実現できます。1つは、組み込みレポートを使用する方法です。[レポートの選択]プロパティページを使って、レポート定義を設計時にアプリケーションに読み込むと、レポートはアプリケーションに組み込まれます。こうすると、レポート定義ファイルを配布する必要がなく、誰もデータソース情報にアクセスできなくなります。
2番目の方法は、アプリケーションで一連の接続文字列エイリアスを定義する方法です。レポート定義ファイルにはエイリアスが含まれ、アプリケーションはレポートを出力する前にエイリアスを実際の接続文字列に置き換えます。これらのエイリアスは、C1Report デザイナなどの他のアプリケーションでは使用できません。さらにセキュリティを重視する場合は、RecordSource プロパティをチェックして、データベース内のテーブルやフィールドに不正なアクセスを試みる者がいないことを確認します。
次のコードは、簡単なエイリアススキームの実装例です。
Visual Basic コードの書き方
| Visual Basic |
コードのコピー
|
|---|---|
Private Sub RenderReport(strReportName As String)
' ユーザーが要求するレポートを読み込みます。
c1r.Load("c:\Reports\MyReports.xml", strReportName)
' 接続文字列エイリアスを置き換えま
Dim strConn$
Select Case c1r.DataSource.ConnectionString
Case "CUSTOMERS"
Case "EMPLOYEES"
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\SecureData\People.mdb;" & _
"Password=slekrsldksd;"
Case "$$SALES"
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\SecureData\Numbers.mdb;" & _
"Password=slkkdmssids;"
End Select
' 接続文字列を設定し、レポートを出力します。
c1r.DataSource.ConnectionString = strConn
ppv1.Document = c1r.Document
End Sub
|
|
C# コードの書き方
| C# |
$$copyCode$$
|
|---|---|
private void RenderReport(string strReportName) {
// ユーザーが要求するレポートを読み込みます。
c1r.Load("c:\Reports\MyReports.xml", strReportName);
// 接続文字列エイリアスを置き換えま
string strConn$;
switch (i) { c1r.DataSource.ConnectionString;
case "$$CUSTOMERS";
case "EMPLOYEES";
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" + _
"Data Source=CSALES";
strConn = "Provider=Microsoft.Jet.OLEDB.4.0;" +
"Data Source=C:\SecureData\Numbers.mdb;" +
"Password=slkkdmssids;";
}
// 接続文字列を設定し、レポートを出力します。
c1r.DataSource.ConnectionString = strConn;
ppv1.Document = c1r.Document;
}
|
|