MySQLからRDLCレポート印刷でのエラー対策

*本サイトはアフィリエイト広告を利用しています。

「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#ですが、書籍で学習するならコレです /

コメント

タイトルとURLをコピーしました