2016-05-12 9 views
0

チケットシステムを作成しようとしていますが、システムのこの部分には、それぞれの特定の日に実行されているすべての動作が表示されます。私はまた、いくつのチケット/座席が利用可能であるかを示すよう努めています。私はすべての席の場所とブール値を持つデータベースを持っているかどうかを示しています。エラー - オブジェクト参照がオブジェクトのインスタンスに設定されていません

Public ds As New DataSet 'used to store the basic elements of the database 
Public con As New OleDb.OleDbConnection 'used to connect to the database 
Public provider As String = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source =" 
Public datafile As String = "Resources/database.accdb" 'database location and version 
Public da As OleDb.OleDbDataAdapter 
Public sqlstatement As String 
Public connString As String = provider & datafile 
lbxActs.Items.Clear() 
    Dim oDataRowView As DataRowView 
    Dim sSelectedAssetType As String 

ds.Clear() 
    con.ConnectionString = connString 
    con.Open() 
    sqlstatement = "SELECT ShowDate FROM AvailableDates" 
    da = New OleDb.OleDbDataAdapter(sqlstatement, con) 
    da.Fill(ds, "Dates") 

    lbxDates.DataSource = ds.Tables("Dates") 
    lbxDates.DisplayMember = "ShowDate" 
    lbxDates.ValueMember = "ShowDate" 
    con.Close() 

    oDataRowView = CType(Me.lbxDates.SelectedItem, DataRowView) 
    sSelectedAssetType = oDataRowView("ShowDate").ToString 
    lbxActs.Items.AddRange(IO.File.ReadAllLines("Resources/" & sSelectedAssetType & ".txt")) 



    con.Close() 
    ds.Clear() 
    con.ConnectionString = connString 
    con.Open()           'Open connection to the database 

    sqlstatement = "SELECT * FROM [Seats" & sSelectedAssetType & "] WHERE [Available] = True " 


    da = New OleDb.OleDbDataAdapter(sqlstatement, con) 
    da.Fill(ds, "seats")       'Fill the data adapter 
    con.Close() 
    Dim recordCount, x As Short 
    recordCount = 0 
    x = 0 
    recordCount = ds.Tables("seats").Rows.Count 

    tbxLeftS.Text = recordCount 

プログラムの最初の部分は、1つは、それが私のテキストファイルからの行為の別のリストを示しクリックされたかに応じて、リストボックスにすべてのショーの日付を置きます。プログラムの2番目の部分は、SQLステートメントを使用して、利用可能なすべての座席場所を見つけることになっています。次に、レコードを数え、テキストボックスに数値を表示します。

Object reference not set to an instance of an object 

このエラーが4回表示され、それがこの行をハイライトする:

sSelectedAssetType = oDataRowView("ShowDate").ToString 
+1

'oDataRowView(" ShowDate ")'は 'Nothing'です – Ian

+0

おそらく何も選択されていません –

+0

Iveはコードを編集しました。私は何かを含めるのを忘れました – chandler

答えて

0

はエラーを取り除くために、何とかoDataRowViewnullであることをその可能性が非常に高いです。文字列に変換しようとする前にnullでないことを確認する必要があります。あなたがoDataRowViewにnull値を得ている理由として

IF Not isdbnull(oDataRowView) 
oDataRowView = CType(Me.lbxDates.SelectedItem, DataRowView) 
End if 

、さらにデバッグするために、あなたが必要になります。このような何かを行います。おそらく、それはPostBackの問題かもしれません(これはWebページでwinformsではないと仮定します)。

+0

私はあなたのコードに置き換えましたが、同じエラーがまだ出ていますか? – chandler

+0

デバッガを使用して値を確認しましたか? – logixologist

関連する問題