データベースにデータを格納するために構築された SQL データベースと ASP.NET Web サイトがあります。
プロジェクトの要件の 1 つは、ユーザーが Crystal Report をサーバーにアップロードし、必要に応じて実行できるようにするシステムを構築することです。このようにして、ユーザーはカスタマイズされたレポートを作成でき(その後、管理、顧客に変わるため)、開発者を経由する必要はありません.
この目標を達成する方法についての提案を探しています。
現在、Crystal Report のデータベース接続を、Crystal Report が開発されたデータベースから最終的に実行されるデータベースにリダイレクトする方法を探しています。ただし、これを行う簡単な方法はないようです。
ReportViewer オブジェクトについても調査中です。しかし、私が見たすべてのコードには、コードでレポートのクエリを指定することが含まれており、これは受け入れられません。
1 つのオプション (私はまったく好きではありません) は、結果を Excel にコピーできるように、独自のクエリを作成できるようにすることです。これは、空白のテキスト ボックスとデータベースの構造に関する情報を意味します。複数の理由から、良い考えではありません。
もう 1 つのオプションは、テーブルごとに 1 つのレポートを作成し (場合によっては追加のレポートもいくつか)、ユーザーが必要なデータを Excel にコピーできるようにすることです。
tl;dr 柔軟な報告システムを構築するにはどうすればよいですか?
=======================================
続き: 08/20/2012
私は持っていますb.pell の拡張メソッドを使用することにしました。これまでのところ、何よりも私を近づけてきました。CrystalReportViewer にバインドする私のコードは以下のとおりです。
CrystalReportSource rs = new CrystalReportSource();
rs.Report.FileName = Server.MapPath("ReportFiles/") + Request["reportname"];
string connstring = System.Web.Configuration.WebConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString;
rs.ReportDocument.ApplyCredentialsFromConnectionString(connstring);
rs.ReportDocument.ApplyNewDatabaseName("myDBName", "mySchemaName");
rs.ReportDocument.Refresh();
CrystalReportViewer1.ReportSource = rs;
これは、作業に非常に近いものです。私の開発マシンでは問題なく動作しますが、サーバーでコードを実行すると、次のエラーが発生します。
ログオンに失敗しました。ファイル CrystalReport2 のエラー {5D2E82E5-783E-4DFD-A770-C8AE72A51E4E}.rpt: 接続できません: ログオン パラメータが正しくありません。説明:現在の Web 要求の実行中に未処理の例外が発生しました。エラーの詳細とコード内のどこでエラーが発生したかについては、スタック トレースを確認してください。例外の詳細: System.Runtime.InteropServices.COMException: Logon failed.Error in File CrystalReport2 {5D2E82E5-783E-4DFD-A770-C8AE72A51E4E}.rpt: 接続できません: ログオン パラメータが正しくありません。ソース エラー:現在の Web 要求の実行中に未処理の例外が生成されました。例外の発生元と場所に関する情報は、以下の例外スタック トレースを使用して特定できます。
エラーはコードの次の行にあります。
crTable.Location = String.Format("{0}{1}", prefix, crTable.Location.Substring(crTable.Location.LastIndexOf(".") + 1))
ApplyNewDatabaseName の呼び出しを削除すると、サーバー名、データベース名、ユーザー名、およびパスワードを入力するか、統合セキュリティを選択するよう求められます。データベース名またはサーバー名を入力できません (これらのフィールドは無効になっています)。
何かご意見は?