Microsoft のレポート ビルダーに似ているが、既存の Web アプリケーションでホストされるレポート ビルダー プログラムを作成しています。次のことができる必要があります。
- レポート サーバー (SSRS2008) および構成済みの共有データ ソースに接続します。
- ユーザーが RDLC を設計できるようにします。と、
- Visual Studio を必要とせずにレポートを動的に生成します。
基本的に、独自のレポート生成ツールではありますが、スタンドアロンです。
ユーザーはレポート作成者である必要はありませんが、データベース内でデータがどのように関連付けられているかを理解している必要があります。(テーブル間に既存のリレーションシップがあります。) 何らかの理由で、SSRS サイトにアクセスしてそこからレポートを作成する (つまり、Microsoft のレポート ビルダー ツールを使用する) ことができないか、アクセスすべきではありません。彼らは私が作成しているツールを使用する必要があります。
私は最後の 2 つの弾丸で非常にやり遂げました。最初のものは私に問題を与えています:私はこれに比較的慣れておらず、おそらく簡単ではありません. 実行時に SSRS2008 データ ソースに接続するにはどうすればよいですか?
私のweb.config
では、次のように connectionStrings にエントリを追加しました。
<add name="ReportingSDS" connectionString="Server=http://myReportingServer;datasource=http://myReportingServer/reportserver/models/myReportModel.smdl;Integrated Security=True"/>
これは所定のフォーマットに基づいています。
そして、この後、私はレンガの壁にぶつかりました:
using (var conn = new SqlConnection(WebConfigurationManager.ConnectionStrings["ReportingSDS"].ConnectionString))
{
conn.Open();
// what's next?
}
私が得ているエラーは次のとおりです。
SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: 名前付きパイプ プロバイダー、エラー: 40 - SQL Server への接続を開けませんでした)
私の目標は、DataSet
それを取得して、このスニペットにプラグインすることです:
using (var memRDLC = new MemoryStream(Encoding.ASCII.GetBytes(myRdlcXml)))
{
// Bind the rdl memory stream and data set to reportviewer
rptViewer.ProcessingMode = ProcessingMode.Local;
LocalReport r = rptViewer.LocalReport;
r.LoadReportDefinition(memRDLC);
foreach (DataTable dataTable in reportEngine.DataTables)
{
r.DataSources.Add(new ReportDataSource(
dataTable.TableName + "_Table", dataTable));
}
r.Refresh();
}