ds.tables(0)='ds.tables(0)'抛出类型'System.NullReferenceException'vb.net的异常

时间:2017-04-13 12:46:59

标签: mysql asp.net vb.net

我试图在一个按钮点击事件中从两个不同的表中提取数据。我检查了一切,似乎没有任何拼写错误或任何东西,但不断收到此错误。

以下是按钮点击事件的代码

Protected Sub btnFindRepair_Click(sender As Object, e As EventArgs) Handles btnFindRepair.Click

    Dim connection As New SqlConnection("Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|\ITrepair.mdf;Integrated Security=True")

    Dim command As New SqlCommand("SELECT * from Repair; SELECT * FROM Customer WHERE Tracking_Number = @Tracking_Number", connection)

    command.Parameters.Add("@Tracking_Number", SqlDbType.Int).Value = txtTrackingNumber.Text

    Dim adapter As New SqlDataAdapter(command)
    Dim ds As System.Data.DataSet
    Dim table As New DataTable()

    adapter.Fill(table)


    'Repair Details
    DDLBookedInBy.SelectedItem.Text = ""
    DDLDeviceType.SelectedItem.Text = ""
    txtBookedInDate.Text = ""
    txtDeviceName.Text = ""
    DDLAccessories.SelectedItem.Text = ""
    txtDevicePassword.Text = ""
    DDLRepairType.Text = ""
    txtTechnical.Text = ""
    txtCompletedNotes.Text = ""
    DDLRepairStatus.Text = ""

    'Customer Details

    txtFname.Text = ""
    txtLname.Text = ""
    txtContactNum.Text = ""
    txtAltContactNum.Text = ""
    txtAddress.Text = ""


    If table.Rows.Count() > 0 Then

        ' return only 1 row
        DDLBookedInBy.SelectedItem.Text = ds.tables(0).Rows(0)(2).ToString()
        DDLDeviceType.SelectedItem.Text = ds.tables(0).Rows(0)(3).ToString()
        txtBookedInDate.Text = ds.tables(0).Rows(0)(4).ToString()
        txtDeviceName.Text = ds.tables(0).Rows(0)(5).ToString()
        DDLAccessories.SelectedItem.Text = ds.tables(0).Rows(0)(6).ToString()
        txtDevicePassword.Text = ds.tables(0).Rows(0)(7).ToString()
        DDLRepairType.Text = ds.tables(0).Rows(0)(8).ToString()
        txtTechnical.Text = ds.tables(0).Rows(0)(9).ToString()
        txtCompletedNotes.Text = ds.tables(0).Rows(0)(10).ToString()

        txtFname.Text = ds.tables(1).Rows(1)(4).ToString()
        txtLname.Text = table.Rows(1)(5).ToString()
        txtContactNum.Text = table.Rows(1)(6).ToString()
        txtAltContactNum.Text = table.Rows(1)(7).ToString()
        txtAddress.Text = table.Rows(1)(8).ToString()

    Else
        MsgBox("NO DATA found")
    End If




End Sub

1 个答案:

答案 0 :(得分:1)

ds.tables(0)的所有出现替换为table。您尚未初始化DataSet ds,但无论如何您都不需要它,因为您使用DataTable tbl填充adapter.Fill(table)

例如:

If table.Rows.Count > 0 Then
    DDLBookedInBy.SelectedItem.Text = table.Rows(0)(2).ToString()
    ' .... '

如果您想填写DataSet使用:

Dim ds As System.Data.DataSet
Dim table As New DataTable()

ds = New DataSet()
adapter.Fill(ds)


If table.Rows.Count > 0 Then
    DDLBookedInBy.SelectedItem.Text = ds.Tables(0).Rows(0)(2).ToString()
    ' .... '
    txtFname.Text = ds.Tables(1).Rows(1)(4).ToString()
    ' ... '