none
Recorerr un Datatable con sentisia for each

    Pregunta

  • Buenas noches

    Tengo un Datatable creado manualmente

    Protected Sub E_Grid_Acto()
            DT1 = New DataTable
            DC1 = New DataColumn
            DS1 = New DataSet
            DT1.TableName = "Acto"
            DC1.ColumnName = "Numero"
            DC1.DataType = GetType(Integer)
            DT1.Columns.Add(DC1)
            DC1 = Nothing
            DC1 = New DataColumn
            DT1.TableName = "Acto"
            DC1.ColumnName = "Descripcion"
            DC1.DataType = GetType(System.String)
            DT1.Columns.Add(DC1)
            DS1.Tables.Add(DT1)
            Me.DataGridView3.DataSource = DS1.Tables("Acto")
    End Sub

    inserto información y la visualizo en un datagridview

     Protected Sub C_Grid_Acto()
            Try
                Dim Row As DataRow = DS1.Tables("Acto").NewRow
                Row(0) = CInt(LblActos.Text)
                Row(1) = Cbx_actos.Text
                DS1.Tables("Acto").Rows.Add(Row)
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
    End Sub

    la pregunta es:

    deseo recorrer el datatable "DT1" Y extraer la informacion que se inserto en cada row del datatable usando la sentencia for each, la documentación que he encontrado no ayudado a disipar mi dudas ni resolver mi incógnita.

    agradecería si ustedes me pueden colaborar ya que gracias a este foro de lenguaje VB.NET he podido solucionar los inconvenientes de mi falta de aprendizaje, muchas gracias y estoy atento.


    domingo, 18 de septiembre de 2016 3:30

Respuestas

  • Rene Paramo,

    La instrucción For Each itera por cada elemento de una colección que implemente la interface IEnumerable, para el caso de un objeto de tipo DataTable la colección la representa la clase DataRowCollection (rows) y los elementos son los objetos de tipo DataRow (row), dicho lo anterior ubicamos cada componente dentro de la sintaxis For Each:

    'For Each Variable As Tipo In Colección
    
    For Each row As DataRow In DT1.Rows
            MessageBox.Show(String.Format("{0} {1}", row("Numero"), row("Descripcion")))
    Next

    Por otro lado, un objeto de tipo DataGridView permite contener una estructura de tabla a la vez, por tanto veo innecesario que definas un objeto de tipo DataSet si no vas a hacer uso de el.


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Rene Paramo domingo, 18 de septiembre de 2016 4:26
    domingo, 18 de septiembre de 2016 4:00