Principales respuestas
MOSTRAR UNO POR UNO LOS REGISTROS DE UNA TABLA EN UN TEXTBOX CON UN DATAREADER

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.ExecuteReaderDim total As Integer = 0
While lectura.Read()
MessageBox.Show(total)
TextBox1.Text = lectura("NOMBRE")
TextBox2.Text = lectura("APELLIDO")total = total + 1
End While2.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 WhileGRACIAS POR LAS COLABORACIONES!
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
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta VECA_87 miércoles, 9 de abril de 2014 8:07
-
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
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.
-
-
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 -
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
saludos
Leandro Tuttini
Blog
Buenos Aires
Argentina- Marcado como respuesta VECA_87 miércoles, 9 de abril de 2014 8:07
-
-
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