2011-03-08 94 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?它看起来像负责填充数据集。

但是,大多数情况下,我建议您在开始发布有关它的问题之前了解并理解您已经复制的代码...