- PR -

Active Reportで、SubReportを呼ぶ方法(PDFで出力)

投稿者投稿内容
Hoku
会議室デビュー日: 2005/11/30
投稿数: 13
投稿日時: 2005-12-03 12:06
前回、この掲示板を利用して、大変助かりました。 また、質問があります。
VB.NETの初心者です。

Web上で、Active Reportを使って、PDFでレポートを出力しようとしています。VB.NETです。 そのメインのActive Reportから、サブレポートを呼ぼうとしています。

メインのレポートのサブレポートを呼ぶ所で、エラーとなります。
エラー内容は以下のとうりです。
System.NullReferenceException: Object reference not set to an instance of an object.

サブレポートを呼ぶコードはこれで良いのでしょうか?

Private Sub メインのレポート_ReportStart(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.ReportStart

Me.srptSubReport.Report = New rptSubReport ←ここで、エラーになります。
  これより下は、メインのレポートのデータの為にストアドを呼ぶ。。。

End Sub

サブレポートでは、Public Sub New()に入り、InitializeReport()へ行くのですが、Private Sub rptSubReport_ReportStart(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.ReportStartには、入ることなしに、メインのレポートのサブレポートを呼んでいる所へ戻り、エラーを出します。

何が原因なのでしょうか? どなたか教えてください。

よろしくお願い致します。









じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-03 12:29
情報が少し足りません。

引用:

Hokuさんの書き込み (2005-12-03 12:06) より:

メインのレポートのサブレポートを呼ぶ所で、エラーとなります。
エラー内容は以下のとうりです。
System.NullReferenceException: Object reference not set to an instance of an object.


エラーではなく例外ですね。
トレース ログも何もないということは、内部的な例外なのでしょうか。
だとすると、初回例外の位置を教えて頂きたいですね。

引用:

サブレポートを呼ぶコードはこれで良いのでしょうか?


srptSubReport が SubReport コントロール クラスなのかどうか判らないのでお答えできません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Hoku
会議室デビュー日: 2005/11/30
投稿数: 13
投稿日時: 2005-12-03 13:06
じゃんぬねっとさん、返答ありがとうございます。 
情報が足りないようで、大変失礼致しました。
srptSubReport が SubReport コントロール クラスです。

初回の例外位置は、
Private Sub メインのレポート_ReportStart(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.ReportStart のなかの、
Me.srptSubReport.Report = New rptSubReport
で、例外になります。 質問の意味がわかってないかもしれません。ごめんなさい。

SubReportにいって、メインのレポートのその上記の位置に戻ってきてしまいます。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-03 13:16
引用:

Hokuさんの書き込み (2005-12-03 13:06) より:

初回の例外位置は、
Private Sub メインのレポート_ReportStart(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.ReportStart のなかの、
Me.srptSubReport.Report = New rptSubReport
で、例外になります。


最初に InitializeComponent メソッドには行くと書かれてましたよね?
けれども、ReportStart イベントには入ってこないと仰られてましたよね?
であれば、初回例外の位置は InitializeComponent 内のどこかなのではないのでしょうか?
初回例外とはそういう意味です。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
アリババ
会議室デビュー日: 2002/10/28
投稿数: 12
投稿日時: 2005-12-05 11:55
>Me.srptSubReport.Report = New rptSubReport ←ここで、エラーになります。
>  これより下は、メインのレポートのデータの為にストアドを呼ぶ。。。
>
>End Sub

rptSubReportがNULLになっているのでは?
Me.srptSubReport.Report = New rptSubReportを

Dim rpt AS New rptSubReport
Me.srptSubReport.Report = New rpt



じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-05 16:35
引用:

アリババさんの書き込み (2005-12-05 11:55) より:

rptSubReportがNULLになっているのでは?
Me.srptSubReport.Report = New rptSubReportを

Dim rpt AS New rptSubReport
Me.srptSubReport.Report = New rpt


こういう書き方って出来ましたっけ?
構文エラーになるような気がしますが...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
アリババ
会議室デビュー日: 2002/10/28
投稿数: 12
投稿日時: 2005-12-05 18:28
>こういう書き方って出来ましたっけ?
>構文エラーになるような気がしますが...
Active Reportのサンプルが以下のようになっていますので
書き方はあっていると思いますが
[Visual Basic]
Private Sub Detail_Format(ByVal sender As Object, ByVal e As System.EventArgs) Handles Detail.Format
Dim rpt As New rptSub()
Dim subDS As New DataDynamics.ActiveReports.DataSources.OleDBDataSource()
subDS.ConnectionString = Me.ds.ConnectionString
subDS.SQL = "Select * from products where categoryID = " + m_categoryID
rpt.DataSource = subDS
Me.ctlSubreport.Report = rpt
End Sub
恐らくHokuさんも参考にされたのではないかと思いました。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-05 20:45
VB の場合 rpt 型があれば確かに構文エラーにはならないでしょうけど...

引用:

アリババさんの書き込み (2005-12-05 11:55) より:

Dim rpt AS New rptSubReport
Me.srptSubReport.Report = New rpt



# 肝心な本題は SubReport.Report を指定する前の、
# SubReport が Null だったということですね...

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)