Vb 10 исключение нулевой ссылки - PullRequest
0 голосов
/ 08 марта 2011

я получил этот код из сети, но я не могу заставить этот код работать в системе, я программирую, поэтому я использовал те же коды для другой системы, и это сработало, когда я попытался использовать его в своей системе, не удалось, поэтому я запустил новую программу, и она все еще не работает ... что не так с моей программой? Вот пример кода:

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

1 Ответ

0 голосов
/ 09 марта 2011

Если я правильно прочитал, вы получите исключение в этой строке:

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

Это означает, что либо ds равно null (маловероятно, поскольку оно инициализировано), либо таблица "enrollment" не существует в наборе данных.

Однако очень сложно ответить на ваш вопрос хорошо, так как вы не опубликовали весь код (отсутствует конец первого подпункта, что предполагает, что больше кода, вероятно, также отсутствует).

Вы щелкнули свой toolstripmenuitem перед тем, как нажать кнопку commit? Похоже, что это отвечает за заполнение набора данных.

В основном, однако, я бы посоветовал вам лучше понять код, который вы скопировали, прежде чем вы начнете публиковать вопросы об этом ...

...