ActiveReportsでMySQLに対してデザイン時連結を行う方法

※本投稿でご紹介する方法は、ActiveReports for .NETの3.0J以降のバージョンにおいて実現可能なものです。また、Visual Studioは2005、もしくは2008が必要となります。


 ActiveReportsのデータソースの設定方法は、以下の3つに大別することができます。

  1. デザイン時連結
  2. 実行時連結
  3. 非連結



 ここではそれぞれの方法についての細かい説明は省きますが、最も楽で簡単な方法は1番の「デザイン時連結」です。「デザイン時連結」は、コーディングが必要ないということはもちろんなのですが、[レポートエクスプローラ]ウィンドウを使用してコントロールの配置とデータのマッピングを一度に行えるという点が大きな特徴となっています。


 そして、「デザイン時連結」はさらに以下の2つに分けられます。

  1. [レポートデータソース]ダイアログ
  2. コンポーネントトレイ(データセット



 [レポートデータソース]ダイアログとは、レポートのDetailセクションにあるデータベースの形をしたアイコンをクリックすると表示されるダイアログウィンドウのことで、この方法で接続可能なデータソースは以下の3つです。

  1. SQL Serverデータベース
  2. OLE DB接続が可能なデータソース
  3. XML






 そのため、これら3つ以外のデータソースに対して「デザイン時連結」を行いたい場合には、必然的に2番目のコンポーネントトレイを使用する方法となります。今回は、具体例として比較的需要が多いと思われるMySQLを使ってこの方法をご紹介したいと思います。


 MySQLのインストールのほかに、MySQLのための.NETプロバイダであるConnector/Net(今回使用したバージョンは6.1)が必要となりますので、こちらもあらかじめインストールしておきます。

MySQL :: Download Connector/NET



 Visual Studioで[新しいプロジェクト]ダイアログから[Reporting]-[ActiveReports 6.0J アプリケーション]を選択し、新規プロジェクトを作成します。





 次にデータセットをプロジェクトに追加するのですが、これには2通りの方法が存在ます。1つはVisual Studioの[データソース]ウィンドウからデータソースを追加してデータセット(とTableAdaptor)を自動生成する方法です。もう1つは、[新しい項目の追加]ダイアログからプロジェクトにデータセットを追加する方法です。今回は後者を使用します。





 追加したデータセットを開き、右クリックで[追加]-[TableAdapter]を選択してTableAdapterを追加します。





 そうしますと、[TableAdapter構成ウィザード]ダイアログが開きますので、ここから[新しい接続]ボタンを押下してMySQLへの接続設定を行っていきます。[接続の追加]ダイアログでデータソースの[変更]ボタンを押下して[データソースの変更]ダイアログを開きます。MySQLのConnector/Netをインストールしてれば、ここのデータソース一覧に「MySQL Database」という項目が表示されているはずですので、それを選択して[OK]ボタンを押します。





 [接続の追加]ダイアログでMySQLデータベースに対する接続情報を設定し、[OK]ボタンを押します。




 「はい、重要情報を接続文字列に含めます。」のラジオボタンを選択後、[次へ]ボタンを押下します。そのままウィザードを進めていき、「SQLステートメントの入力」では「クエリビルダー」を使ってレポートに必要なデータを取得するSQL文を設定します。[完了]ボタン押下後、DataTableの項目に余計なキーが設定されている場合には、それを削除しておきます。


 ActiveReportsのデザイン画面を開き、ツールボックスの一番上部に表示されている先ほど作成したデータセットをレポートデザイナ上にドラッグ&ドロップします。こうすることで、データセットがレポートのコンポーネントトレイ上に張り付きます。





 プロパティウィンドウから、ActiveReportオブジェクトのDataSouceプロパティにデータセットを、DataMemberプロパティにデータテーブルを設定します。この状態で、[レポートエクスプローラ]からデータセットの各項目をドラッグ&ドロップで配置できるようになっているはずです。





 これだけですと、デバッグ実行やレポートデザイナのプレビュータブに実際のデータは表示されません。レポートのReportStartイベントハンドラに下記のような記述を追加します。


Visual Basic

Dim ta As New DataSet1TableAdapters.DataTable1TableAdapter()
ta.Fill(DataSet11.DataTable1)


 以上が、ActiveReportsでMySQLにデザイン時連結する際の手順です。