none
Como obtener los datos de un DataSet rellenado con el metodo fill de un TableAdapter

    Pregunta

  • Hola
    Tengo un dataset rellenado mediante el metodo fill de un tableadapter por medio del siguiente código:

     

    Me.RegistroConfiguracionTableAdapter.Fill(Me.GenCatalogosSQLDataSet.RegistroConfiguracion)

    Hay alguna manera del obtener los valores de los campos de ese dataset?
    Muchas gracias
    Patricia

    domingo, 28 de junio de 2009 13:29

Respuestas

  • Hola, Patricia:

    Los objetos DataSet NO CONTIENEN CAMPOS, igual que una base de datos tampoco contiene campos. Son los objetos DataTable incluidos en el objeto DataSet los que tienen campos, al igual que una tabla cualquiera de una base de datos.

    Podrás conocer los campos existentes en un objeto DataTable recorriendo su colección Columns:

            ' Recorremos la colección Columns del objeto DataTable.
            '
            For Each col As DataColumn In Me.GenCatalogosSQLDataSet.RegistroConfiguracion.Columns

                MessageBox.Show(col.ColumnName)

            Next

    Pero para leer los valores de los campos, tendrás que recorrer su colección Rows para obtener el valor de cada columna, tal y como muestra el siguiente ejemplo:

            For Each row As DataRow In Me.GenCatalogosSQLDataSet.RegistroConfiguracion.Rows

                Dim values() As Object = row.ItemArray

                Dim temp As String = String.Empty

                For Each value As Object In values

                    If Not value Is DBNull.Value Then
                        temp &= CStr(value) & Environment.NewLine
                    End If

                Next

                MessageBox.Show(temp)

            Next


    Un saludo


    Enrique Martínez [MS MVP - VB]
    domingo, 28 de junio de 2009 13:58

Todas las respuestas

  • Hola, Patricia:

    Los objetos DataSet NO CONTIENEN CAMPOS, igual que una base de datos tampoco contiene campos. Son los objetos DataTable incluidos en el objeto DataSet los que tienen campos, al igual que una tabla cualquiera de una base de datos.

    Podrás conocer los campos existentes en un objeto DataTable recorriendo su colección Columns:

            ' Recorremos la colección Columns del objeto DataTable.
            '
            For Each col As DataColumn In Me.GenCatalogosSQLDataSet.RegistroConfiguracion.Columns

                MessageBox.Show(col.ColumnName)

            Next

    Pero para leer los valores de los campos, tendrás que recorrer su colección Rows para obtener el valor de cada columna, tal y como muestra el siguiente ejemplo:

            For Each row As DataRow In Me.GenCatalogosSQLDataSet.RegistroConfiguracion.Rows

                Dim values() As Object = row.ItemArray

                Dim temp As String = String.Empty

                For Each value As Object In values

                    If Not value Is DBNull.Value Then
                        temp &= CStr(value) & Environment.NewLine
                    End If

                Next

                MessageBox.Show(temp)

            Next


    Un saludo


    Enrique Martínez [MS MVP - VB]
    domingo, 28 de junio de 2009 13:58
  • Muchísimas gracias Enrique. Voy a probarlo y te cuento si me da algun problema.

    Gracias

    Patricia
    domingo, 28 de junio de 2009 14:25
  • Mira, yo para ver los campos de los tableadapters de mis dataset, uso los tipados.

    Te explico como funciona... lleno una tabla de mi dataset (tipado, hecho con el asistente) ahi si podes ver, ponele que tengas... 3 campos, nombre, apellido y cuit.

    'Busco por cualquier criterio
            Me.PERSONASTableAdapter.Buscar(Me.DsPersonas.PERSONAS, Me.txtBuscado.Text, Me.txtBuscado.Text, Me.txtBuscado.Text, Me.txtBuscado.Text) '.Buscar, es una query que llena la tabla con los parametros q le pase el usuario

            If Me.DsPersonas.PERSONAS.Rows.Count > 0 Then
                'lleno grilla
                For x As Integer = 0 To Me.DsPersonas.PERSONAS.Rows.Count - 1
                    Me.ClientesDataGridView.Rows.Add()
    'Aca esta lo que querias vos, acerca de los campos de tu tableadapter en tu dataset, yo lo uso asi.

                    Me.ClientesDataGridView.Item(0, x).Value = Me.DsPersonas.PERSONAS(x).CUIT
                    If Me.DsPersonas.PERSONAS(x).TIPO_PERSONA = "Fisica" Then
                        Me.ClientesDataGridView.Item(1, x).Value = Me.DsPersonas.PERSONAS(x).NOMBRE & " " & Me.DsPersonas.PERSONAS(x).APELLIDO
                    Else
                        Me.ClientesDataGridView.Item(1, x).Value = Me.DsPersonas.PERSONAS(x).RSOCIAL
                    End If
                Next
            Else
                Me.ClientesDataGridView.Rows.Clear()
            End If

    Este es un buscador, que deja los datos en una grilla... pero si no entendes algo, avisame que te lo explico mas detalladamente.

    P.D: El dataset, tiene que ser tipado.
    • Marcado como respuesta patrope martes, 28 de julio de 2009 7:33
    • Desmarcado como respuesta patrope martes, 28 de julio de 2009 7:34
    lunes, 29 de junio de 2009 13:00
  • Muchas gracias.
    Lo probare y te digo que tal me ha ido.

    lunes, 29 de junio de 2009 15:21
  • ¿Y has tenido ya tiempo de probar el código que te indiqué ayer? Te lo pregunto por saber si te ha dado algún problema. ;-)
    Enrique Martínez [MS MVP - VB]
    lunes, 29 de junio de 2009 16:30
  • De momento no he podido pero no te preocupes porque en cuanto lo haga te lo diré.

    Gracias Enrique
    lunes, 29 de junio de 2009 16:37