none
Mostrar registros de un datatable por medio de un timer VB.NET 2010

    Pregunta

  • Estoy intentando mostrar los registros de un datatable por medio de una label, pero el efecto no lo logro como deseo, el objetivo es recorrer el datatable y mostrar en el label cada unos de los registros, aquí coloco como lo hago:

          

    Private Sub tmMostrarRegistros_Tick(sender As Object, e As EventArgs) Handles tmMostrarRegistros.Tick
            Dim i As Integer
            Try


                For i = 0 To DtGlobal.Rows.Count - 1

                    ' lblBaner.Text = ""
                    lblBaner.Text = Str(DtGlobal.Rows(i).Item(1).ToString & DtGlobal.Rows(i).Item(1).ToString)
                    ' lblBaner.Text = Str(DataGridView1.Rows(i).Cells(0).Value)


                Next


            Catch ex As Exception

            End Try
        End Sub

    El problema es que no se aprecian los registros, aparece el primero pero no se reflejan los demás, espero me puedan ayudar.

    viernes, 28 de abril de 2017 2:40

Respuestas

  • El problema es que no se aprecian los registros, aparece el primero pero no se reflejan los demás

    No, claro que no se reflejan los demás. De hecho, seguramente el registro que estás viendo es el último y no el primero. El problema es que dentro del Tick del Timer has metido un bucle que los pinta todos. Ese bucle va "a toda velocidad", no hace una iteración por cada disparo del Timer sino que se ejecuta completo cada vez que se dispara el Timer. Por lo tanto, todos los valores se "pisan" unos a los otros en una fracción de segundo y no te da tiempo de verlos.

    En lugar del bucle dentro del Tick, tendrás que llevar una variable FUERA del Tick que contenga el número del último registro que mostraste. Dentro del evento, incrementas la variable y muestras SOLO ese registro. Evidentemente, tendrás que añadir la lógica para inicializar la variable la primera vez y para controlar si se ha alcanzado el máximo valor.

    viernes, 28 de abril de 2017 6:59

Todas las respuestas

  • Hola Vladimir Angarita

    Por qué en un label? como deseas mostrar todo los datos del datatable en un label? no deberías mostrarlo en un contenedor, en tu foreach estás chancando en cada recorrido el registro.


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    viernes, 28 de abril de 2017 6:52
  • El problema es que no se aprecian los registros, aparece el primero pero no se reflejan los demás

    No, claro que no se reflejan los demás. De hecho, seguramente el registro que estás viendo es el último y no el primero. El problema es que dentro del Tick del Timer has metido un bucle que los pinta todos. Ese bucle va "a toda velocidad", no hace una iteración por cada disparo del Timer sino que se ejecuta completo cada vez que se dispara el Timer. Por lo tanto, todos los valores se "pisan" unos a los otros en una fracción de segundo y no te da tiempo de verlos.

    En lugar del bucle dentro del Tick, tendrás que llevar una variable FUERA del Tick que contenga el número del último registro que mostraste. Dentro del evento, incrementas la variable y muestras SOLO ese registro. Evidentemente, tendrás que añadir la lógica para inicializar la variable la primera vez y para controlar si se ha alcanzado el máximo valor.

    viernes, 28 de abril de 2017 6:59