Aplicación Windows Forms: error System.NullReferenceException

Buenos días,

He estado tratando de averiguar la fuente del error en mi aplicación. ¿Qué es esta función (GetConcentrations()) es mostrar datos de mi base de datos en un DataGridView. La función se llama en PageLoad pero funciona bien, pero cuando la llamo en otro Sub, aparece este error.

¿Alguien podría ayudarme? Ya probé de diferentes maneras.

¡Gracias!

enter image description here

Aquí está el código:

Private Sub GetConcentrations()
    Dim conString As String = ConfigurationManager.ConnectionStrings("dbAsthmaConnectionString").ConnectionString
    Me.dataAdapter = New SqlDataAdapter("Select * from tblConcentrations", conString)
    'Dim adapter As New SqlDataAdapter("Select * from tblConcentrations", conString)
    Dim dataset As New Data.DataSet

    Try
        Dim commandBuilder As New SqlCommandBuilder(Me.dataAdapter)

        Dim table As New DataTable()
        table.Locale = System.Globalization.CultureInfo.InvariantCulture
        Me.dataAdapter.Fill(table)
        'Dim datasetgetconcentrations = New DataSet
        Me.dataAdapter.Fill(dataset)
        Me.bindingSource1.DataSource = table

        DataGridView3.AutoResizeColumns(DataGridViewAutoSizeColumnMode.AllCellsExceptHeader)

        DataGridView3.DataSource = dataset.Tables(0)

        dataset.Dispose()

    Catch ex As Exception
        MsgBox("Failed to display the concentration table (GetConcentrations)!", MsgBoxStyle.Information)
    End Try

    'Dim ConcentrationValue As Double = DataGridView2.Rows.Contains
    'TextBoxCurrentConcentration.Text = txtMessage.Text
End Sub

preguntado el 22 de mayo de 12 a las 19:05

Por favor, publique el código, no una imagen. Además, muestre qué línea obtiene la excepción. Muestre también la pila de llamadas completa de la excepción, si es posible. -

La dataset.Dispose() no tiene mucho sentido ya que parece que lo estás usando para enlazar tus controles. Por cierto, publicar una captura de pantalla completa es difícil de leer. -

hola te puse el codigo Destaca Me.dataAdapter.Fill(conjunto de datos) -

1 Respuestas

No entiendo por qué llamas al método Fill dos veces.
Una vez para llenar un DataTable y otra vez para llenar un DataSet. Solo se necesita realmente el del conjunto de datos. ¿Podría probar si esto cambia algo en su problema?

    Dim ds as New DataSet
    ds.Locale = System.Globalization.CultureInfo.InvariantCulture 
    Me.dataAdapter.Fill(ds) 
    DataGridView3.AutoResizeColumns(DataGridViewAutoSizeColumnMode.AllCellsExceptHeader) 
    DataGridView3.DataSource = ds.Tables(0) 

Además, no elimine su conjunto de datos al salir, todavía lo está usando.
En este caso, es mejor dejar que Garbage Collection se encargue de esta tarea.

contestado el 22 de mayo de 12 a las 21:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.