「Visual Studio」RDLCレポートデザイナーで、MySQL(MariaDB)データベースから印刷する方法を解説しています。
主な解説は以下の内容です。
- RDLCレポートデザイナーの使い方
- MySQLでエラーが出た時の対策
OracleやAccessデータベースでは問題なく作動しましたが、MySQLでは同じ手順では正しく作動せず、少し手を加えています。
MySQLでのエラーは以下です。
同じようにMySQLでエラーが出ている方には参考になるはずです。
エラー対策のサンプルはこのページの後半で紹介していますので、よろしければ参考にしてください。
\ C#ですが、書籍で学習するならコレです /
新しいプロジェクトの作成
Visual Studioで「Windowsフォームアプリケーション」を作成します。
DataSetの作成
最初にレポートとデータベースを接続するためのDataSetを作成します。
<手順>
「プロジェクト」>「新しい項目の追加」
「データセット」>「追加」
ツールボックスから「TableAdapter」をドラックまたはダブルクリックで追加します。
「新しい接続」を選びます。
「データソース」を選び、「ユーザー名」と「パスワード」を入力します。
※MySQL ODBCドライバーのインストール方法はこちらを参考にしてください。
「接続文字列」でもデータベースに接続できます、好みの方法で設定してください。
「テスト接続」で問題なければ「OK」で次に進みます。
次の画面が表示され、「SQLステートメントを使用」がチェックされているので、そのまま「次へ」で進みます。
SQLステートメントを入力して「完了」してください。
「クエリービルダー」でSQLステートメントを作ることも可能です。
※以下は「クエリービルダー」の画面です。
以下のようにテーブルの項目一覧が表示されます。
レポートの作成
DataTable作成でデータベースが読み込めるようになりました。
次はレポートのデザインを行います。
<手順>
「プロジェクト」>「新しい項目の追加」
「レポート」>「追加」
※レポートが表示されない場合は「レポートデザイナー」のインストールが必要です、こちらの記事を参考にしてください。
ツールボックスから「テーブル」をドラックまたはダブルクリックで追加します。
名前、データソース、使用できるデータセットを設定して「OK」で進みます。
「名前」は表示された「DataSet1」をそのまま使用、「データソース」と「使用できるデータセット」は一覧からセットしました。
以下のような画面になるので印刷するデータ項目を指定します。
枠線内右上の記号をクリックすることで、データベース項目を選ぶことができます。
右クリックで列挿入できます。
日本語を使用する場合はフォントを変更してください。
プレビュー画面の作成
次にレポートをプレビューするフォームを作成します。
「レポートビューア・コントロール」のインストール
「NuGetパッケージの管理」から、レポートビューアコントロールのライブラリをインストールします。
<手順>
「プロジェクト」>「NuGetパッケージの管理」
「Microsoft.ReportingServices.ReportViewerControl.Winforms」をインストールします。
※同じようなものがたくさん有ります、間違えないように気をつけてください。
案内に従いインストールを進めます。
終了すると以下の画面になります、不要なので閉じても問題ありません。
「NuGet」も使わないので画面を閉じます。
From1.vb「デザイン」の編集
From1.vb「デザイン」を編集します。
<手順>
「Microsoft SQL Server」>「ReportViewer」をドラッグまたはダブルクリックで配置します。
「Choose Report」に「Report1.rdlc」を選びます。
「親コンテナーにドッキングする」を選びます。
デバッグを実行する
デバッグでプログラムを実行してください。
レポートがプレビューできたら終了です。
プレビューできなかった場合は次に進みましょう。
レポートが印刷できなかった場合
MySQL(MariaDB)データベースでは以下のエラー画面が表示されました。
いろいろと試しましたが、最終的にはVBのモジュールをコーディングしました。
<手順>
MySQLにアクセスする場合は「MySQL.Data」ライブラリをインストールします。
他のデータベースでも同様の処理が必要かもしれません。
コーディングで「MySQLData」をimport
ReportViewer1_Loadイベントに以下のようにコーディングします。
コーディングサンプルは以下です。
Imports System.Security.Cryptography
Imports Microsoft.Reporting.WinForms
Imports MySql.Data.MySqlClient
Public Class Form1
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.ReportViewer1.RefreshReport()
End Sub
Private Sub ReportViewer1_Load(sender As Object, e As EventArgs) Handles ReportViewer1.Load
'--- データベース接続 ---
Dim str As String
str = "Server=localhost" _
& ";Port=3306" _
& ";Database=テストdb" _
& ";UserID=root" _
& ";Password=''"
Dim cn As New MySql.Data.MySqlClient.MySqlConnection(str)
cn.Open()
'--- データの読み込み ---
Dim sql As String = "select * from 売上tbl"
Dim da As New MySqlDataAdapter(sql, cn)
Dim dt As New DataTable
da.Fill(dt)
'--- レポート定義 ---
Dim rds = New ReportDataSource()
rds.Name = "DataSet1"
rds.Value = dt
'--- データを表示 ---
Me.ReportViewer1.LocalReport.DataSources.Add(rds)
'--- クローズ ---
da.Dispose()
cn.Dispose()
End Sub
End Class
詳しい解説は省略させてください。
プレビュー画面
デバッグを実行してレポートがプレビューできたら成功です。
\ C#ですが、書籍で学習するならコレです /