- PR -

asp.netでActive Reportを使用してPDFで出力する方法

1
投稿者投稿内容
Hoku
会議室デビュー日: 2005/11/30
投稿数: 13
投稿日時: 2005-11-30 08:07
.NETの初心者です。まだ、数ヶ月しか経験がありません。
VB.NETを使用してます。WEB上で、Active Reportで作ったデータをPDFで出したいのですが、うまくできません。

空欄のWEBFORMのコードには、
Rpt.Run(False)
として、Active Reportを呼ぶようにしています。

Active Reportでは、
 Private Sub rptDataReader_ReportStart (ストアドを呼びます)
 Private Sub rptDataReader_DataInitialize
 Private Sub rptDataReader_FetchData
をよぶようにしていますが、rptDataReader_ReportStartで、rptDataReader_ReportStart(Object sender, EventArgs e)のオブジェクトのインスタンスをセットしてないです、System.NullReferenceExceptionというエラーとなってしまいます。

色々ネットで調べてみましたが、どうしたら良いのかさっぱりわかりません。上記の3つのPrivate Subをコメントアウトすると、データは取ってきませんがPDFとしては出力できてます。 初歩的な質問で大変申し訳ないのですが、どのようにしてActive Reportでデータをとって、PDFに出力すればよいのでしょうか?

よろしくお願いします。


Hoku
会議室デビュー日: 2005/11/30
投稿数: 13
投稿日時: 2005-12-02 04:59
自己レスです。エラーでは、
System.NullReferenceException: Object reference not set to an instance of an object.
と、でます。 WEBFORMでのActive Reportの呼び方が悪いのでしょうか?
よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-12-02 09:31
引用:

Hokuさんの書き込み (2005-11-30 08:07) より:

Rpt.Run(False)
として、Active Reportを呼ぶようにしています。


これだけでいいですよね。

引用:

Active Reportでは、
 Private Sub rptDataReader_ReportStart (ストアドを呼びます)
 Private Sub rptDataReader_DataInitialize
 Private Sub rptDataReader_FetchData
をよぶようにしていますが、


え? 自分で呼んでいるのですか?

引用:

rptDataReader_ReportStartで、rptDataReader_ReportStart(Object sender, EventArgs e)のオブジェクトのインスタンスをセットしてないです、System.NullReferenceExceptionというエラーとなってしまいます。


自分で呼んでいるからなっているだけじゃないでしょうか?
Run メソッドで実行された場合、イベント引数が null になることはありません。(普通)

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
アリババ
会議室デビュー日: 2002/10/28
投稿数: 12
投稿日時: 2005-12-02 09:36
細かいことがよく分かりませんが、System.NullReferenceExceptionはオブジェクトが
nullですといっています。(あたりまでですが)
rptDataReader_DataInitializeでDataSourceにデータをセットし、Label等のオブジェ
クトのDataFieldプロパティーでフィールド名を設定してデータを当て込んでいるであれば
フィールド上でNULLがある場合、System.NullReferenceExceptionで落ちてしまいます。
私の場合は、NVL2を使ってSQLでNULLをなくしました。

Hoku
会議室デビュー日: 2005/11/30
投稿数: 13
投稿日時: 2005-12-02 10:09
じゃんぬねっと様、アリババ様、返答大変ありがとうございます! 誰からもレスがつかなかったので、心配しておりました。
初心者でありますので、Active Reportなど理解していない点もあると思うのですが、自分なりにHelpを読んだり,リサーチしたりしていましたが、未だ解決しておりません。

わかりにくいので、コードを書きます。

Private myReader As SqlDataReader
Private myCommand As SqlCommand
*****************************************************
 Private Sub ActiveReport1_ReportStart(ByVal sender As Object, ByVal e As     System.EventArgs) Handles MyBase.ReportStart

Dim myConnString As String = "Connectionの情報"
Dim myConnection As New SqlConnection(myConnString)

Try
myCommand.Connection = myConnection (←ここでエラーになる)
   With myCommand
.Connection.Open()
.CommandType = CommandType.StoredProcedure
.CommandText = "Stored_Proc_Name"
.Parameters.Add("@test_value", SqlDbType.Int).Value = 0

End With
myReader = myCommand.ExecuteReader

Catch ex As Exception
lblError.Text = ex.ToString()
End Try
End Sub
****************************************************************
Private Sub ActiveReport1_DataInitialize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.DataInitialize

Fields.Add("aaa")
End Sub
***********************************************************
Private Sub ActiveReport1_FetchData(ByVal sender As Object, ByVal eArgs As DataDynamics.ActiveReports.ActiveReport.FetchEventArgs) Handles MyBase.FetchData

myReader.Read()
Fields("aaa").Value = myReader("aaa").ToString()
myReader.Close()

End Sub

Connectionのところでエラーになるので、ConnectionがNULLということなのでしょうか?

よろしくお願いします。
かるあ
ぬし
会議室デビュー日: 2003/11/16
投稿数: 1190
お住まい・勤務地: センガワ→ムサシノ
投稿日時: 2005-12-02 11:05
myCommand が Null のままになっていますね

myConnection はいつ Close,Dispose されるんでしょう
このままではセッションが残ってしまう気がします。
Hoku
会議室デビュー日: 2005/11/30
投稿数: 13
投稿日時: 2005-12-02 12:00
かるあ様、返信ありがとうございます!
Closeがなかったので、付け加えました。 そして、PDFへ出るようになりました。
Private myCommand As New SqlCommand
と書き換えましたら、きちんと出力できました。

ありがとうございました。
1

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