none
MOSTRAR UNO POR UNO LOS REGISTROS DE UNA TABLA EN UN TEXTBOX CON UN DATAREADER RRS feed

  • Pregunta

  • HOLA BUENAS A TODOS!!

    TENGO UN PROBLEMILLA CON UN  DATAREADER. OS EXPLICO:

    TENGO UN FORMULARIO CON 2 TEXTBOX DE NOMBRE Y APELLIDO Y UN BOTON DE SIGUIENTE.

    LO QUE QUIERO ES QUE AL PULSAR  EL BOTON EN LOS DOS TEXTBOX ME PASE DE UN REGISTRO A OTRO EN LOS CAMPOS NOMBRE Y APELLIDO.QUIERO HACERLO CON UN DATAREADER PERO NO CONSIGO SACARLA. SI ME PODRIAS AYUDAR ESTARIA MUY AGRADECIDA!

    AQUI OS DEJO MI CODIGO Y VARIAS PRUEBAS QUE HE HECHO:

    1.AQUI ME SALE PERO SI QUITO EL MESSAGEBOX YA NO , Y YO NO QUIERO QUE APAREZCA

     Dim conexion As New OleDbConnection("PROVIDER=MICROSOFT.JET.OLEDB.4.0; DATA SOURCE=C:\Users\Josemi\Documents\Prueba_bd.mdb")

    Dim comando As New OleDbCommand("SELECT NOMBRE,APELLIDO FROM PERSONAS", conexion)
     Dim lectura As OleDbDataReader = comando.ExecuteReader

     Dim total As Integer = 0

    While lectura.Read()
               

                MessageBox.Show(total)
                TextBox1.Text = lectura("NOMBRE")
                TextBox2.Text = lectura("APELLIDO")

    total = total + 1
            End While

    2.tambien he probado con un for y nada

    Dim comando As New OleDbCommand("SELECT NOMBRE,APELLIDO FROM PERSONAS", conexion)
            Dim lectura As OleDbDataReader = comando.ExecuteReader

            Dim total As Integer
            Dim record_count As Integer = 0


            While lectura.Read()
                For i = record_count To total
                    'MessageBox.Show(total)
                    TextBox1.Text = lectura("NOMBRE")
                    TextBox2.Text = lectura("APELLIDO")
                    record_count = record_count + 1
                Next
            End While

    GRACIAS POR LAS COLABORACIONES!

    viernes, 14 de marzo de 2014 10:51

Respuestas

  • si la idea es usar un read no aplica el diseño que quieres lograr ya que el reader esta pensado para una lectura secuencial y conectada a la db, no recomiendo lo que quieres hacer con un reader

    si vas a usar el reader entonces muestra los datos en un grid y que la persona seleccine o se mueva por el control editando, peor muestrale la lista de registros en pantalla

    [WinForms] Edición Empleados

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta VECA_87 miércoles, 9 de abril de 2014 8:07
    viernes, 14 de marzo de 2014 11:48
  • Hola Veca, con el reader puedes hacerlo de la sgte manera... te pasa el sgte hasta llegar al ultimo, pero despues del último se queda ahí y no regresa al primero, en el page_load de tu pagina define session("cont") = 0

     Dim cont = CInt(Session("cont").ToString)
            Dim conta = 0        
            Dim oreader As System.Data.SqlClient.SqlDataReader
            oreader = ""        
            While oreader.Read()
                If conta = Session("cont") Then
                    Dim Nombre = oreader("Nombres").ToString
                    Dim Apellidos = oreader("Apellidos").ToString
                    TextNombres.Text = Nombre
                    TextApellidos.Text = Apellidos
                    cont += 1
                    Session("cont") = cont
                    Exit Sub
                End If
                conta += 1
            End While
            oreader.Close()        

    Salu2


    • Editado ablanco lunes, 17 de marzo de 2014 14:39
    • Marcado como respuesta VECA_87 jueves, 3 de abril de 2014 7:49
    lunes, 17 de marzo de 2014 14:33

Todas las respuestas

  • El ejemplo 2 no tiene ningún sentido, pero el ejemplo 1 está bien, en el sentido de que efectivamente mostrará todos los registros en los textboxes. El problema es que si quitas el messagebox, no das oportunidad al usuario de que vea los valores, porque si hay, por ejemplo, 1000 registros, lo que hace tu código es cambiar 1000 veces el valor de los textboxes a toda velocidad, sin que dé tiempo a que nadie los vea. Tienes que añadir algo de código en el bucle while para que se "pare" y dé tiempo a que el usuario vea el valor que se genera en cada iteración.

    Una sugerencia es añadir un botón "Siguiente", y dentro del click del botón meter

    If lectura.Read() ...

    y ahi presentar el valor en los textboxes. Evidentemente, la variable "lectura" tendrás que declararla a nivel de Form para que el clic del botón la pueda ver, y tendrás que prever en algún sitio el cierre del datareader y de la conexión.

    viernes, 14 de marzo de 2014 11:05
  • ES EN UN BOTON SIGUIENTE DONDE HE METIDO EL CODIGO DEL EJEMPLO1, LO QUE NO SE ES COMO HACER ESO, QUE SE PARE Y UNO POR UNO Y NO PASE TODOS LOS REGISTROS DE GOLPE:(
    viernes, 14 de marzo de 2014 11:28
  • hola

    creo que deberias evaluar usar lo que planteo aqui

    mostrar los registros de una tabla y moverme usando bindingnavigator

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    viernes, 14 de marzo de 2014 11:46
  • si la idea es usar un read no aplica el diseño que quieres lograr ya que el reader esta pensado para una lectura secuencial y conectada a la db, no recomiendo lo que quieres hacer con un reader

    si vas a usar el reader entonces muestra los datos en un grid y que la persona seleccine o se mueva por el control editando, peor muestrale la lista de registros en pantalla

    [WinForms] Edición Empleados

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina

    • Marcado como respuesta VECA_87 miércoles, 9 de abril de 2014 8:07
    viernes, 14 de marzo de 2014 11:48
  • Gracias Leandro, ya me he dado cuenta de que con el datareader no es el mejor camino a seguir, asi que seguire tus consejos y probare con el bidingnavigator

    gracias de nuevo por la atencion a los dos!

    lunes, 17 de marzo de 2014 9:42
  • Hola Veca, con el reader puedes hacerlo de la sgte manera... te pasa el sgte hasta llegar al ultimo, pero despues del último se queda ahí y no regresa al primero, en el page_load de tu pagina define session("cont") = 0

     Dim cont = CInt(Session("cont").ToString)
            Dim conta = 0        
            Dim oreader As System.Data.SqlClient.SqlDataReader
            oreader = ""        
            While oreader.Read()
                If conta = Session("cont") Then
                    Dim Nombre = oreader("Nombres").ToString
                    Dim Apellidos = oreader("Apellidos").ToString
                    TextNombres.Text = Nombre
                    TextApellidos.Text = Apellidos
                    cont += 1
                    Session("cont") = cont
                    Exit Sub
                End If
                conta += 1
            End While
            oreader.Close()        

    Salu2


    • Editado ablanco lunes, 17 de marzo de 2014 14:39
    • Marcado como respuesta VECA_87 jueves, 3 de abril de 2014 7:49
    lunes, 17 de marzo de 2014 14:33