2011-04-11 97 views
0

我正在爲調用構建一個投票系統,並試圖在VB中構建它。到目前爲止,這是我的:VB應用程序中的NullReferenceException錯誤?

Dim con As New OleDb.OleDbConnection 
    Dim dbProvider As String 
    Dim dbSource As String 

    dbProvider = "PROVIDER=Microsoft.Jet.OLEDB.4.0;" 
    dbSource = "Data Source = C:\PhonePoll.mdb" 

    con.ConnectionString = dbProvider & dbSource 

    con.ConnectionString = "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source = C:\PhonePoll.mdb" 

    con.Open() 

    'sql = "SELECT * FROM voting" 
    'da = New OleDb.OleDbDataAdapter(sql, con) 
    'da.Fill(ds, "voting") 

    If inc <> -1 Then 

     Dim cb As New OleDb.OleDbCommandBuilder(da) 
     Dim dsNewRow As DataRow 

     dsNewRow = ds.Tables("voting").NewRow() 
     dsNewRow.Item("voted") = RadioButton1.Checked.ToString 
     dsNewRow.Item("voted") = RadioButton2.Checked.ToString 
     dsNewRow.Item("voted") = RadioButton3.Checked.ToString 
     dsNewRow.Item("voted") = RadioButton4.Checked.ToString 

     ds.Tables("voting").Rows.Add(dsNewRow) 

     da.Update(ds, "voting") 

     MsgBox("New Record added to the Database") 

    End If 

    MsgBox("Phone call has been logged") 

    con.Close() 

此代碼包含在「記錄呼叫」按鈕。在表格上,有四個單選按鈕,全部都有不同的文本值,應該輸入到「投票」表中。

我的問題是,當我選擇一個單選按鈕,然後單擊「錄音鍵」,它則顯示此錯誤:

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

顯示上線

dsNewRow = ds.Tables("voting").NewRow() 

我」這個錯誤我不知道我做錯了什麼。

歡呼聲!

回答

2

我假設在實際的代碼中,您沒有將數據集的SQL和Fill()方法註釋掉,這只是上面代碼中的一個錯字 - 對吧?如果我錯了,那塊代碼被註釋掉了,那麼你的數據集是空的,這是問題...

+0

我不明白,我評論他們出來,因爲它沒有擺在首位的工作。我現在取消註釋他們,它的作品?謝謝您的幫助! – mickburkejnr 2011-04-11 22:30:39

0

不要把所有的代碼放在一行上 - 將它分開。 ds爲null或 ds.Tables(「voting」)返回空值,但永遠不會知道,因爲它是暫時的。你可以不檢查它,因爲你沒有把它存儲在一個變量

這就是爲什麼我嘗試從來沒有要求過久:

A B = me.foo.bar.baz.fuz.bom ()< - 只是要求麻煩!

0

ds是null,其未初始化

也許,如果你解除引用:

'sql = "SELECT * FROM voting" 
'da = New OleDb.OleDbDataAdapter(sql, con) 
'da.Fill(ds, "voting")