どうも、あおです。
ActiveReportsの使用方法がわからなくて、
色々やってみて、とりあえずできたのでメモしておきます。
今回作成するポイントは以下
・レポートのDataSourceにDataTableをセット
・メインFormとは別にプレビューFormを作成
・メインFormのボタンクリックでプレビューを表示
1. ActiveReportsのvbファイルを追加
ソリューションエクスプローラーのプロジェクトの上で
右クリックして、新しい項目を追加。
ActiveReportsのファイル(拡張子が.vb)を選択して追加します。
今回はこのファイルの名前を「rpt1」とします。
2. 追加したファイルでレイアウト作成
追加したファイルに線やテキストオブジェクトを追加して、
つくりたいレイアウトを作成します。
3. プレビュー用フォーム作成
ソリューションエクスプローラーのプロジェクトの上で
右クリックして、新しいフォームを追加します。
今回はこのフォームの名前を「arpPreview」とします。
そのデザイン画面で、左のツールボックスからActivereportsの
Viewerコントロールをフォーム上にドラッグ&ドロップします。
今回はこのコントロールの名前を「arvRep」と設定します。
4. プレビュー用フォームにコード記載
プレビューフォームにコードを追加します。
上部に以下のImportを追加します。
Imports GrapeCity.ActiveReports
Class内に以下のように追加します。
Protected pReport As GrapeCity.ActiveReports.SectionReport Protected pReportName As String Private ReadOnly Property ActiveReport() As SectionReport Get Return New rpt1() End Get End Property Public Property Report() As GrapeCity.ActiveReports.SectionReport Get Return Me.pReport End Get Set(ByVal value As GrapeCity.ActiveReports.SectionReport) Me.pReport = value End Set End Property Public Property ReportName() As String Get Return Me.pReportName End Get Set(ByVal value As String) Me.pReportName = value End Set End Property Public Sub New() Me.New(Nothing) End Sub Public Sub New(ByVal rep As GrapeCity.ActiveReports.SectionReport) Me.New(String.Empty, rep) End Sub Public Sub New(ByVal repName As String, ByVal rep As GrapeCity.ActiveReports.SectionReport) ' この呼び出しはデザイナーで必要です。 InitializeComponent() ' InitializeComponent() 呼び出しの後で初期化を追加します。 Me.pReprtName = repName Me.pReport = rep End Sub
さらに、Loadイベントに以下のように追記します。
Private Sub arpPreview_Load(sender As Object, e As EventArgs) Handles MyBase.Load Me.arvRep.Document = Me.pReport.Document Me.Text = Me.ReportName End Sub
5. メインフォームを追加
プレビュー画面を呼び出すメインフォームを追加します。
ソリューションエクスプローラーのプロジェクトの上で
右クリックして、新しいフォームを追加します。
今回はこのフォームの名前を「main」とします。
左のツールボックスからボタンを追加します。
任意のボタン名を設定します。
6. メインフォームにコード記載
メインフォームにコードを追加します。
上部に以下のImportを追加します。
Imports GrapeCity.ActiveReports
Class内に以下のように追加します。
Private ReadOnly Property ActiveReport() As SectionReport Get Return New rpt1() End Get End Property
そして、ボタンのクリック処理に以下を記載します。
'DataTableの宣言やセット等... Dim dt As New DataTable("SOKO") '列追加 dt.Columns.Add("SOKOCD") dt.Columns.Add("NYCASESU") dt.Columns.Add("NYBARASU") '行の設定 Dim dtRow As DataRow dtRow = dt.NewRow dtRow("SOKOCD") = "01" dtRow("NYCASESU") = "5" dtRow("NYBARASU") = "100" '行追加 dt.Rows.Add(dtRow) Dim rep As GrapeCity.ActiveReports.SectionReport = Me.ActiveReport rep.DataSource = dt rep.run Dim arpView As New arpPreview arpView.Report = rep arpView.ReportName = Me.Text arpView.Show()
DataTableの設定はサンプルです。
自身で必要な設定など行ってください。
arpView.ReportName = Me.Text
上記の記載は、プレビュー画面のタイトルに
メイン画面の画面名を反映する為に実施しています。
不要であれば消してください。
7. レポートファイルにDataTableのフィールドを設定
レポートファイルのデザイン画面を開き、
該当のテキストオブジェクトのDataFieldに
メインフォームで作成したDataTableのカラム名を設定します。
(テキストオブジェクトを右クリックして、プロパティ押下から
DataFieldを設定できます。)
これで実行すると、メインフォームに作成したボタン押下で、
データが反映されたプレビュー画面が表示されます。