このチュートリアルでは、AdventureWorks2008 サンプル データベースを使用して、Visual Studio Windows フォーム アプリケーション プロジェクトのテーブル形式の簡単なレポートを作成する方法について説明します。ここでは、レポート ウィザードを使用してレポートをプロジェクトに追加し、ReportViewer Windows フォーム コントロールを Windows フォームに追加して、レポートをアプリケーションのユーザーに表示できるようにします。
Visual Studio のレポート デザイナーを使用したレポートのデザインの詳細については、「レポート デザイナー (Visual Studio)」を参照してください。
必要条件
このチュートリアルを使用するには、AdventureWorks2008 サンプル データベースへのアクセス権が必要です。このチュートリアルで使用されているクエリは、旧バージョンの AdventureWorks で動作しない場合があります。AdventureWorks2008 サンプル データベースを入手する方法の詳細については、「チュートリアル: AdventureWorks データベースのインストール」を参照してください。
このチュートリアルでは、Transaction-SQL クエリと ADO.NET の DataSet オブジェクトおよび DataTable オブジェクトについて理解していることを前提としています。
新しい Windows フォーム アプリケーション プロジェクトを作成するには
Visual Studio を開きます。[ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
[インストールされたテンプレート] ペインで [他の言語] を展開し、[Visual Basic] を選択します。
[Windows フォーム アプリケーション] を選択します。
[ファイル名] ボックスに「SimpleReport」と入力します。
[場所] ボックスにプロジェクトを保存するディレクトリを入力するか、[参照] をクリックしてディレクトリを選択します。
[OK] をクリックします。
Windows フォーム デザイナーが開き、作成したプロジェクトの Form1 が表示されます。
フォームをクリックします。[表示] メニューの [プロパティ ウィンドウ] をクリックします。[サイズ] プロパティを展開して [幅] および [高さ] を表示します。[幅] を 500 ピクセルに設定します。
データセットとデータ テーブルを定義するには
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスで、[データセット] をクリックします。データセットの名前を入力して [追加] をクリックします。既定の名前は DataSet1.xsd です。
これにより、新しい XSD ファイルがプロジェクトに追加され、データセット デザイナーが開きます。
データセット デザイナーのツールボックスから [TableAdapter] コントロールをデザイン画面にドラッグします。
これにより、TableAdapter 構成ウィザードが起動します。
[データ接続の選択] ページで [新しい接続] をクリックします。
Visual Studio で初めてデータ ソースを作成する場合は、[データ ソースの選択] ページが表示されます。[データ ソース] ボックスで [Microsoft SQL Server] を選択します。
[接続の追加] ダイアログ ボックスで、次の手順を実行します。
[サーバー名] ボックスに、AdventureWorks2008 データベースが配置されているサーバーの名前を入力します。
SQL Server Express の既定のインスタンスは (local)\sqlexpress です。
[サーバーにログオンする] セクションで、データにアクセスするためのオプションを選択します。既定値は [Windows 認証 (統合セキュリティ) を使用する] です。
[データベース名の選択または入力] ボックスの一覧の [AdventureWorks2008] をクリックします。
[OK] をクリックしてウィザードに戻り、[次へ] をクリックします。
前の手順で [SQL Server 認証を使用する] を指定した場合は、重要情報を文字列に含めるか、または情報をアプリケーション コードに設定するかを指定するオプションを選択します。
[接続文字列をアプリケーション構成ファイルに保存する] ページで、接続文字列の名前を入力するか、既定の AdventureWorks2008ConnectionString をそのまま使用します。[次へ] をクリックします。
[コマンドの種類を選択します] ページで [SQL ステートメントを使用する] を選択し、[次へ] をクリックします。
[SQL ステートメントの入力] ページで、AdventureWorks2008 データベースから売上データを取得するための次の Transact-SQL クエリを入力し、[完了] をクリックします。
--SET DATEFORMAT mdy SELECT PC.Name AS Category, PS.Name AS Subcategory, DATEPART(yy, SOH.OrderDate) AS Year, 'Q' + DATENAME(qq, SOH.OrderDate) AS Qtr, SUM(DET.UnitPrice * DET.OrderQty) AS Sales FROM Production.ProductSubcategory PS INNER JOIN Sales.SalesOrderHeader SOH INNER JOIN Sales.SalesOrderDetail DET ON SOH.SalesOrderID = DET.SalesOrderID INNER JOIN Production.Product P ON DET.ProductID = P.ProductID ON PS.ProductSubcategoryID = P.ProductSubcategoryID INNER JOIN Production.ProductCategory PC ON PS.ProductCategoryID = PC.ProductCategoryID WHERE (SOH.OrderDate BETWEEN ('20020101') AND ('20031231')) GROUP BY DATEPART(yy, SOH.OrderDate), PC.Name, PS.Name, 'Q' + DATENAME(qq, SOH.OrderDate), PS.ProductSubcategoryID
[クエリ ビルダー] ボタンをクリックし、クエリ ビルダーを使用してクエリを作成し、[クエリの実行] ボタンを使用してクエリを検証することもできます。
[完了] をクリックします。
データセット デザイナーに、DataTable1 の DataTable 定義が表示されます。このデータ テーブル内のフィールドの名前は、クエリの列および列の別名 (Category、Subcategory、Year、Qtr、および Sales) に基づいています。レポートにデータをバインドする際は、これらのフィールドを使用します。
注
データ テーブル内のフィールドを変更する必要がある場合は、[データセット デザイナー] ページで DataTable1 ヘッダーまたは DataTable1TableAdapter ヘッダーを右クリックします。[構成] を選択し、TableAdapter 構成ウィザードを再起動します。
DataSet1 ファイルを保存します。
レポート ウィザードを使用して新しいレポート定義ファイルを追加するには
[プロジェクト] メニューの [新しい項目の追加] をクリックします。
[新しい項目の追加] ダイアログ ボックスで [レポート ウィザード] を選択します。
[名前] に「Sales Orders.rdlc」と入力し、[追加] をクリックします。
ダイアログ ボックスの背後にグラフィック デザイン画面が開きます。
[データセットのプロパティ] ページの [データ ソース] ボックスの一覧で、作成した DataSet を選択します。
[使用できるデータセット] ボックスの一覧が自動的に更新され、作成した DataTable が表示されます。
[次へ] をクリックします。
[フィールドの配置] ページで、次の操作を行います。
[使用できるフィールド] から [Category] を [行グループ] ボックスにドラッグします。
[使用できるフィールド] から [Subcategory] を [行グループ] ボックスの [Category] の下にドラッグします。
[使用できるフィールド] から [Year] を [列グループ] ボックスにドラッグします。
[使用できるフィールド] から [Qtr] を [列グループ] ボックスの [Year] の下にドラッグします。
[使用できるフィールド] から [Sales] を [値] ボックスにドラッグします。
[次へ] を 2 回クリックし、[完了] をクリックします。
.rdlc ファイルが作成され、レポート デザイナーで開かれます。デザインした Tablix がデザイン画面に表示されます。
レポートにタイトルを追加するには
デザイナー画面上の Tablix をクリックして、列ハンドルおよび行ハンドルをテーブルの上部および横に表示します。
注
Tablix の上部と横に表示されているグレーのボックスがハンドルです。ハンドルは、列グループ、行グループ、および Tablix 自体でさまざまな操作を実行するために使用します。Tablix の上部に表示されるハンドルは、列ハンドルです。Tablix の横に表示されるハンドルは、行ハンドルです。列ハンドルと行ハンドルが交差するハンドルは、コーナー ハンドルです。
コーナー ハンドルをクリックして Tablix 全体を選択し、交差矢印を表示します。
交差矢印をドラッグして、デザイン画面上の Tablix を下へ移動します。
ツールボックスから [テキスト ボックス] 項目をデザイン画面の Tablix の上部にドラッグし、交差矢印をドラッグして配置します。
テキスト ボックスが選択されている状態で、「Company Sales」と入力します。必要に応じて、テキスト ボックスの枠線をドラッグして拡げてください。
テキスト ボックスが選択されている状態で、[レポートの書式] ツール バーの [太字] をクリックし、[フォント サイズ] ボックスで [16pt] を選択します。
テキスト ボックスが選択されている状態で、[レポートの書式] ツール バーの [前景色] をクリックします。
[色の選択] ダイアログ ボックスで、[ミッドナイト ブルー] を選択し、[OK] をクリックします。
フォームに ReportViewer コントロールを追加するには
ソリューション エクスプローラーで、Form1.vb をクリックします。
[表示] メニューの [デザイナー] をクリックします。
ツールボックスの [レポート] セクションから ReportViewer コントロールをフォームにドラッグします。
右上隅のスマート タグ グリフをクリックして、ReportViewer1 コントロールのスマート タグ パネルを開きます。[レポートの選択] ドロップダウン リストをクリックし、SimpleReport.Sales Orders.rdlc を選択します。
スマート タグ パネルで、[親コンテナーにドッキングする] をクリックします。
このチュートリアルの後半では、アプリケーションをビルドしてレポートをいつでもフォーム内に表示することができます。レポート デザインの増分変更が最終的なレポートに与える影響を確認する場合は、次の各手順の最後にアプリケーションをビルドしてレポートを表示します。
(省略可) F5 キーを押してアプリケーションをビルドし、フォーム内にレポートを表示します。
通貨フィールドの書式を設定するには
Sales Orders.rdlc ファイルの [レポート デザイナー] ウィンドウで、[Sum(Sales)] 値を持つ左上のセルを右クリックし、[テキスト ボックスのプロパティ] をクリックします。
[数値] タブを選択します。
[カテゴリ] ボックスの一覧の [通貨] を選択します。
[記号] ボックスの一覧の [英語 (英国)] を選択します。
[OK] をクリックしてダイアログ ボックスを閉じます。
値が [Sum(Sales)] の他のすべてのセルについて、同じ手順を繰り返します。
(省略可) F5 キーを押してアプリケーションをビルドし、レポートを表示します。数値形式が変更されたことを確認します。ここでは、通貨の換算は行われず、数値形式のみが変更されています。
Tablix レイアウトの書式を設定するには
Sales Orders.rdlc ファイルの [レポート デザイナー] ウィンドウで、カーソルをドラッグして、Tablix の左上隅にある 2 つの空白セルを選択します。
選択したセルを右クリックし、[セルの結合] をクリックします。
結合されたセルを右クリックし、[テキスト ボックスのプロパティ] をクリックします。
[罫線] タブをクリックします。[プレビュー] 領域で、罫線トグル ボタンをクリックして、上部と左側の罫線を削除します。
[OK] をクリックします。
Tablix をクリックしてハンドルを表示します。見出しが Subcategory の列で、列ハンドルの右側をドラッグして列幅を広げます。列幅を広げることで、見出しテキストが折り返されるのを防ぐことができます。
F5 キーを押してアプリケーションをビルドし、レポートを表示します。
関連項目
参照
LocalReport.SubreportProcessing
LocalReport.SubreportProcessing
概念
ReportViewer タスクのスマート タグ パネルの使用
その他の技術情報
Designing and Implementing Reports Using Report Designer (Reporting Services)