2011-03-08 158 views
0

我從網上得到了這段代碼,但是我不能讓這段代碼在系統上工作,我正在編程,所以我使用了相同的代碼到另一個系統,它工作,當我嘗試使用它我的系統,它失敗了,所以我開始了一個新的程序,它仍然失敗...我的程序有什麼問題?這裏是代碼的示例:Vb 10空引用異常

Public Class Form2 
Dim con As New OleDb.OleDbConnection 
Dim dbProvider As String 
Dim dbSource As String 
Dim ds As New DataSet 
Dim da As OleDb.OleDbDataAdapter 
Dim sql As String 
Dim inc As Integer 
Dim max As Integer 


Private Sub AllRecordsToolStripMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) 

dbProvider = "PROVIDER = Microsoft.Jet.OLEDB.4.0;" 
    dbSource = "Data Source = C:\Users\Josh\Documents\enrollment.mdb" 

    con.ConnectionString = dbProvider & dbSource 

    con.Open() 

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

    max = ds.Tables("enrollment").Rows.Count 
    inc = -1 

    con.Close() 


Private Sub Sve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Sve.Click 

    If inc <> -1 Then 
     Dim cb As New OleDb.OleDbCommandBuilder(da) 
     Dim dsnewrow As DataRow 

     dsnewrow = ds.Tables("enrollment").NewRow() 

     dsnewrow.Item("LastName") = TextLast.Text 


     ds.Tables("enrollment").Rows.Add(dsnewrow) 
     da.Update(ds, "enrollment") 

     MsgBox("Saved!") 
    End If 
End Sub 

每當我運行程序,它編譯,但是當我點擊提交按鈕,顯示此消息「NullReference例外是未處理的對象引用不設置爲一個對象的一個​​實例「和它指向.NewRow

回答

0

如果我沒有看錯,你要在這條線的異常:

dsnewrow = ds.Tables("enrollment").NewRow() 

這意味着要麼dsnull(不可能的,因爲它的初始化),或者說,表「註冊lment「在數據集中不存在。

但是,很難回答你的問題,因爲你沒有發佈所有的代碼(第一個子代的末尾缺失,這意味着更多的代碼可能會丟失)。

您是否在單擊提交之前單擊了您的toolstripmenuitem?它看起來像負責填充數據集。

但是,大多數情況下,我建議您在開始發佈有關它的問題之前瞭解並理解您已經複製的代碼...