- PR -

オブジェクト参照がオブジェクト インスタンスに設定されていません

投稿者投稿内容
shellken
会議室デビュー日: 2008/09/09
投稿数: 11
投稿日時: 2008-09-09 09:51
asp.net2008でWEB予約システムを開発しています。使用言語はVBです。
「オブジェクト参照がオブジェクト インスタンスに設定されていません」という
エラーが出て困っています。
データベースはmicrosoft acsess2003を使っています。
windows付属のIISを使用してwindowsXP professional でサーバを構築しています。
自分のパソコン内(アドレスにlocalhost+数字の出るやつ)で実行すると上記のエラーは出ませんが、一度WEBサイトのコピーを取りlocalhostやIISを使ったWEB上(別のパソコン)で実行すると上記のエラーが出ます。
ソースを示します。
ta.Update(tb)<−−−−−−−ここでエラーが出ます
わかる方どうかご教授ください。


Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim ta As New 予約DataSetTableAdapters.予約TableAdapter
Dim tb As New 予約DataSet.予約DataTable
Dim r As 予約DataSet.予約Row



tb = New 予約DataSet.予約DataTable
r = tb.New予約Row
Try '挿入
r.時間 = Label3.Text
r.日時 = Label1.Text
r.内容 = Label2.Text
r.時間 = Label3.Text
r.名前 = Label5.Text
r.電話 = Label6.Text
r.診察券番号 = Label4.Text
r.状況 = "診察待ち"
r.登録日時 = Now.ToString("MM" + "月" + "dd" + "日") + Now.ToString("(" + "ddd" + ")") + Now.ToString("HH" + "時" + "mm" + "分")
r.削除日時 = "***"
tb.Add予約Row(r)
ta.Update(tb)<−−−−−−−ここでエラーが出る
Response.Redirect("keka2.aspx")

Catch exdb As DBConcurrencyException
lblMessage.Text = exdb.GetBaseException.Message
Return

Catch ex As Exception
lblMessage.Text = ex.GetBaseException.Message
Return
End Try

End Sub
さかもと
ぬし
会議室デビュー日: 2004/05/14
投稿数: 586
投稿日時: 2008-09-09 10:32
さかもとと申します。

Dim tb As New 予約DataSet.予約DataTable
ここを

Dim tb As 予約DataSet.予約DataTable
と変更したらどうなりますか?

すいません、追記です。
IIS上(別PC)に置いたときのtableadapterから見たmdbのパス(接続文字列)ってどうなっていますか?

_________________
------------------------------------------
拝啓、さかもとと申します。

拝啓、さかもとと申します♪

[ メッセージ編集済み 編集者: さかもと 編集日時 2008-09-09 11:05 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2008-09-09 12:34
引用:

shellkenさんの書き込み (2008-09-09 09:51) より:

ta.Update(tb)<−−−−−−−ここでエラーが出ます


'ta' か 'tb' どちらかが Nothing になっているのでしょうけど、どちらでしょうか?

引用:

さかもとさんの書き込み (2008-09-09 10:32) より:

Dim tb As New 予約DataSet.予約DataTable
ここを

Dim tb As 予約DataSet.予約DataTable
と変更したらどうなりますか?


そこは余計なインスタンスを生成しているだけで、NullReferenceException の原因にはならないかな... もちろん余計なことはしないに限ります。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2008-09-09 12:37
引用:

shellkenさんの書き込み (2008-09-09 09:51) より:
ta.Update(tb)<−−−−−−−ここでエラーが出ます


 ここで発生しているエラーによって、「オブジェクト参照がオブジェクト インスタンスに設定されていません」というメッセージが表示されていますか?それを、どうやって確認しましたか?

 おそらく、ta.Update で発生するエラーはデータベースがらみのもので、別のメッセージが表示されていると思います。「オブジェクト参照…」のメッセージは、キャッチ句内で発生した別の例外だと思います。

引用:

Dim ta As New 予約DataSetTableAdapters.予約TableAdapter
Dim tb As New 予約DataSet.予約DataTable
Dim r As 予約DataSet.予約Row

tb = New 予約DataSet.予約DataTable


 「As New」という書き方で、どのようなことが起こるか、正しく把握していますか?

引用:
コード:
    Try
        ' 中略
        Response.Redirect("keka2.aspx")

    Catch ex As Exception
        lblMessage.Text = ex.GetBaseException.Message
        Return
    End Try



 Redirect によって例外が発生しますよ?

引用:
コード:
        r.登録日時 = Now.ToString("MM" + "月" + "dd" + "日") _
            + Now.ToString("(" + "ddd" + ")") _
            + Now.ToString("HH" + "時" + "mm" + "分")



う〜ん(^-^; まぁ、それでもいいんだけど、↓この方が見やすい。
コード:
        r.登録日時 = Now.ToString("MM月dd日(ddd)HH時mm分")
        ' または、r.登録日時 = Now.ToString("f")


それより、"登録日"は、検索のしやすさなどを考えると、DateTime 型のままとする方がよいと思います。(Access での型は知りません)
つーか、型付けしてないのね?(-_-;


 病院の診察予約のようですが、Access で大丈夫?
Kow
会議室デビュー日: 2008/09/09
投稿数: 1
投稿日時: 2008-09-09 13:44
まずtbのインスタンスの生成について、
Dim tb As New 予約DataSet.予約DataTable
tb = New 予約DataSet.予約DataTable
なぜ宣言と同時にインスタンスを生成してあげているのに、
再び同じインスタンスを生成してあげる必要があるのでしょうか。

tb = New 予約DataSet.予約DataTableに関しては不必要な行です。削除しましょう。

次に、オブジェクト参照…についてのエラーですが、
'ta'、'tb'共にインスタンスの生成は行なわれていると思うので、問題ではないと思うのですが。。。

Updateメソッドの中身はどうなっているんですか??
shellken
会議室デビュー日: 2008/09/09
投稿数: 11
投稿日時: 2008-09-09 14:00
Kowさんの書き込み (2008-09-09 13:44) より:
>tb = New 予約DataSet.予約DataTableに関しては不必要な行です。削除しましょう。

削除しましたが結果は同じでした。

>次に、オブジェクト参照…についてのエラーですが、
>'ta'、'tb'共にインスタンスの生成は行なわれていると思うので、問題ではないと思うのですが。。。

>Updateメソッドの中身はどうなっているんですか??

Updateメソッドの中身とはどういう意味でしょうか?
shellken
会議室デビュー日: 2008/09/09
投稿数: 11
投稿日時: 2008-09-09 14:03
ちなみにさっきのコードの最上段に
Imports System.Data.OleDb
Imports System.Data

と書いていますが何か問題あるでしょうか?
shellken
会議室デビュー日: 2008/09/09
投稿数: 11
投稿日時: 2008-09-09 14:09
[quote]
Jittaさんの書き込み (2008-09-09 12:37) より:
>ここで発生しているエラーによって、「オブジェクト参照がオブジェクト
>インスタンスに設定されていません」というメッセージが表示されていますか?
>それを、どうやって確認しましたか?

Catch ex As Exception
lblMessage.Text = ex.GetBaseException.Message
Return
End Try
のところで発生しています


>おそらく、ta.Update で発生するエラーはデータベースがらみのもので、
>別のメッセージが表示されていると思います。「オブジェクト参照…」
>のメッセージは、キャッチ句内で発生した別の例外だと思います。

。「オブジェクト参照…」のメッセージは確かにキャッチ句内で発生しています。

別の例外とはどういうことでしょうか?


>「As New」という書き方で、どのようなことが起こるか、
>正しく把握していますか?

新しいインスタンスができていると思っていますが詳しくは理解していません。

>Redirect によって例外が発生しますよ?

この分は大丈夫のようです。

>病院の診察予約のようですが、Access で大丈夫?

どのような問題がありますか?

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