@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

Me.OleDbSelectCommand1.CommandTestでエラー

1
投稿者投稿内容
nori
ベテラン
会議室デビュー日: 2004/09/02
投稿数: 56
投稿日時: 2004-09-02 19:18
こんにちは、yamashitaともうします。
ASP初心者です。皆さん宜しくお願い致します。

あるシステムのログイン画面を作成しています。
ログイン時にテーブルの情報を取得しようと思います。
テーブルの情報取得は今後も頻繁に使用するため、別クラスにしました。

画面:FormA  クラス:Class FormA
情報を取得するクラス:Class A_Table

元のクラス
Class FromA
Private Sub Bottun_Click( )
Dim a As New A_Table()
a.Shain_Get_Record(UserID)
End Sub
End Class

情報を取得するクラス
Class A_Table
Protected WithEvents OleDbConnection1 As System.Data.OleDb.OleDbConnection
Protected WithEvents OleDbDataAdapter1 AsSystem.Data.OleDb.OleDbDataAdapter
Protected WithEvents OleDbSelectCommand1 As System.Data.OleDb.OleDbCommand
Protected WithEvents DataSet1 As System.Data.DataSet

Public Function A_Get_Record(Byval in_no As String) As String
Me.OleDbSelectCommand1.CommandText = "SELECT * FROM A_Table " & _
"WHERE (SHAIN_NO ='" & in_no & "')"

OleDbDataAdapter1.Fill(DataSet1)
count = DataSet1.Tables("A31_M_SHAIN").Rows.Count
・・・・・・・・・・・・・・
End Function
End Class

実行するとSQL文をCommandTextにセットするところでエラーになります。
メッセージは「Object reference not set to an instance of an object.」です。

OleDbSelectCommand1が原因のように思うのですが、、、。

初歩的な事だと思うのですが、どうぞ宜しくお願いいたします。
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-09-03 09:21
引用:

未記入さんの書き込み (2004-09-02 19:18) より:

Protected WithEvents OleDbConnection1 As System.Data.OleDb.OleDbConnection
Protected WithEvents OleDbDataAdapter1 AsSystem.Data.OleDb.OleDbDataAdapter
Protected WithEvents OleDbSelectCommand1 As System.Data.OleDb.OleDbCommand
Protected WithEvents DataSet1 As System.Data.DataSet


の部分が間違いです。クラスのインスタンスを作成する必要があります。
まずはMSDN:OleDbConnection コンストラクタの使用例等を参考にするとよいかもしれません。
nori
ベテラン
会議室デビュー日: 2004/09/02
投稿数: 56
投稿日時: 2004-09-03 16:13
ありがとうございます!
教えていただいたHPを参考に色々と試してみました。
下記のように作ってみたのですが、エラーになってしまいます。

Public Class A_Table
Public user_no As String

Public Function A_Get_Table(Byval in_no As String) As String

Dim OleDbConnection1 As New System.Data.OleDb.OleDbConnection()
Dim OleDbDataAdapter1 As New System.Data.OleDb.OleDbDataAdapter()
Dim OleDbSelectCommand1 As New System.Data.OleDb.OleDbCommand()
Dim DS_A As New DataSet()

OleDbConnection1.ConnectionString = "省略"
OleDbSelectCommand1.CommandText = "SELECT * FROM A_TABLE"
OleDbSelectCommand1.Connection = OleDbConnection1
OleDbDataAdapter1.SelectCommand = OleDbSelectCommand1

OleDbConnection1.Open()
DS_A.Clear()
OleDbDataAdapter1.Fill(DS_A)

user_no = DS_A.Tables("A_TABLE").Rows(0)("USER_NO") ★

OleDbConnection1.Close()
End Function
End Class

★印のところでエラーになってしまいます。
-----------------------
Exception Details: System.NullReferenceException:
Object reference not set to an instance of an object.
-----------------------
書く順番が違うのでしょうか?

お手数をおかけいたしますが、宜しくお願い致します。
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-09-03 16:41
引用:

未記入さんの書き込み (2004-09-03 16:13) より:

Exception Details: System.NullReferenceException:
Object reference not set to an instance of an object.


エラーメッセージ(Null参照)から予測すると、単純にSQL文にて取得した値「USER_NO」がNULLなのではないでしょうか。
NULLのデータの場合は「IsDbNull」でチェックしてから、「user_no As String」へ格納したほうがいいかも。

[追記]
@IT:データベースから読み出してきたデータがNULLだった場合の対処方についてご相談
[/追記]

[ メッセージ編集済み 編集者: えんぞ@見習 編集日時 2004-09-03 16:46 ]
nori
ベテラン
会議室デビュー日: 2004/09/02
投稿数: 56
投稿日時: 2004-09-03 17:08
ありがとうございました!
ASPへの第一歩を踏み出せたような気分です!!

今後とも宜しくお願い致します。
1

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