- - PR -
データセットはsubルーチンが終わると消えるのですか?
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2002-10-17 14:32
いつも参考にさせてもらっています。elmoです。
教えていただきたいのですが、 datasetを作成(newして)し オンロード時によびだされるSubルーチンで、 datasetにデータを放り込みます。 ボタンクリック時でオンロード時にセットしたdatasetを見に行こうとして 「オブジェクト参照がオブジェクトインスタンスに設定されていません」というエラーがでます。 ・datasetはメモリ上に書き込んだだけで、xmlファイルには書き出していません。 (ウィザードは使っていないので) ・datasetは関数の外で(protected)で宣言しています。newしています。 datasetはメモリに書き出しただけの場合、手続き(関数)が終了するとなくなるものなのでしょうか? それともプログラムがおかしくそのような状況になっているのでしょうか? 教えていただけると大変助かります。 | ||||
|
投稿日時: 2002-10-17 15:02
話が良く見えないので、コードを載せていただいた方が良いかも。 | ||||
|
投稿日時: 2002-10-17 15:31
わかりにくい説明ですみません・・・。
あせってるせいで(泣)。 ソースは以下のとおりです。 ============================================================ ☆ソース☆ ============================================================ Imports System.Data Imports System.Data.OleDb Public Class PCSB004_DATA Inherits System.Web.UI.Page '使用オブジェクト Protected pcsConnection As New OleDbConnection() Protected pcsCommand As New OleDbCommand() Protected pcsAdapter As New OleDbDataAdapter() Protected dstSelect As New DataSet() Protected dtlSelect As DataTable Protected pscConnstr As String Protected pcsSql As String Protected intGridCount As Integer Protected intCount As Integer '******************************************************* ' オンロードイベント '******************************************************* Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load If Not Page.IsPostBack Then '=================================================== ' 処理1) データ抽出 '=================================================== pscConnstr = ConfigurationSettings.AppSettings("dbconnstr") pcsConnection.ConnectionString = pscConnstr pcsSql = "SELECT LOGINCD, LOGINNAME FROM STAFFTABLE" Try pcsCommand.CommandText = pcsSql pcsCommand.Connection = pcsConnection pcsAdapter.SelectCommand = pcsCommand pcsAdapter.FillSchema(dstSelect, SchemaType.Mapped) pcsAdapter.Fill(dstSelect, "PcsDataTable") Catch objError As Exception 'ERROR 処理 Finally 'nop End Try '=================================================== ' 処理2) グリッドにデータバインド '=================================================== dtlSelect = dstSelect.Tables("PcsDataTable") dgdKikaku.DataSource = dtlSelect dgdKikaku.DataBind() END IF End Sub '******************************************************* ' ボタンクリックイベント '******************************************************* Private Sub cmdUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdUpdate.Click Response.Write("テーブル行数" & dtlSelect.Rows.Count) End Sub End Class ============================================================ ☆ソース☆ ============================================================ 簡単にいうとオンクリックイベントで、ページオンロード時につくったはずのDataSetがなかったのです。 ウィザードで作った場合、上の処理は問題なくできていたので、xmlに書き出さないと、 datasetは手続きが終わるとなくなるのかなと思ったのです。 | ||||
|
投稿日時: 2002-10-17 17:19
elmoです。
すみません。解決しました。 見えなかったのは、ボタンクリック時に「データを抽出する」ロジックが、ポストバック時に処理しないというif文に入っていたために起こってしまいました。 まぁぁぁったく、DATASETやDATATABLEとは次元の違う話でした! 本当にすみません! |
1