Ver Mensaje Individual
  #3 (permalink)  
Antiguo 08/02/2010, 15:20
AlterElt
 
Fecha de Ingreso: febrero-2010
Mensajes: 63
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Rellenar campos a partir de consulta SQL después de seleccionar en listbox

Gracias por la respuesta, la verdad que me estoy volviendo loco xD

Entiendo que lo correcto sería pedir a la base de datos la tabla clientes entera y luego meter en el listbox solo nombre, apellido1 y apellido2, no? Tienes razón de al decir que me será más práctico traerme toda la tabla clientes para no hacer dos consultas, pero ¿me recomiendas traerme también una segunda tabla llamada datoscliente (con un join), que contiene datos de medidas y tal que pretendo mostrar en otro listbox con columnas? o es preferible hacer una segunda consulta?

Por ahora tengo esto:

Código vb:
Ver original
  1. Private Sub btnInicioBuscar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInicioBuscar.Click
  2.         'Creamos la conexión a la base de datos definida como datasource en Settings
  3.        Dim oConexion As New SQLite.SQLiteConnection(My.Settings.Default.origConnectionString)
  4.  
  5.         'Consulta a la base de datos
  6.        Dim oComando As New SQLite.SQLiteCommand("SELECT * FROM clientes WHERE nombre LIKE '%" & tbInicioBuscar.Text & "%' OR apellido1 LIKE '%" & tbInicioBuscar.Text & "%' OR apellido2 LIKE '%" & tbInicioBuscar.Text & "%' ORDER BY nombre", oConexion)
  7.  
  8.         'Creamos el DataReader
  9.        Dim oDataReader As SQLite.SQLiteDataReader
  10.         'Abrimos la conexión
  11.        oConexion.Open()
  12.         'Llenamos el datareader
  13.        oDataReader = oComando.ExecuteReader() 'obtiene un objeto datareader
  14.  
  15.         'Vaciamos el Listbox antes de llenarlo
  16.        lbInicioClientes.Items.Clear()
  17.         'Recorremos las filas del DataReader y agregamos al ListBox
  18.        While oDataReader.Read
  19.             'Agregamos nombres y apellidos al ListBox
  20.            'IF oDataReader.
  21.            lbInicioClientes.Items.Add(oDataReader("nombre") & " " & oDataReader("apellido1") & " " & oDataReader("apellido2"))
  22.             'selectFirst = True
  23.        End While
  24.         'Cerramos el DataReader
  25.        oDataReader.Close()
  26.         'Cerramos la conexión a la base de datos
  27.        oConexion.Close()
  28.     End Sub

lbInicioClientes: es el ListBox donde pongo lo que quiero buscar.
tbInicioBuscar: es el TextBox donde escribo lo que quiero buscar.
btnInicioBuscar: es el Botón que pulso para empezar a buscar.

Que en principio, con la consulta tal y como la he cambiado ya me busca como quería lo del textbox, es decir, introduciendo nombre o apellidos (te busca en las tres columnas), hasta ahí bien.

Solo una cuestión más de esto:

Como se hace para que al introducir texto en un textbox y pulsar enter me haga lo mismo que al hacer click en el boton? Es decir, que escribas y le des a enter y ya busque... es una tonteria, pero aporta usabilidad xD

Ahora solo me queda la duda de como pasar lo del datareader a una tabla para luego pasarlo a los respectivos textboxes y como saber que linea del textbox esta seleccionada (no hay algún tipo de índice o algo así? he visto la propiedad .Selecteditem y Selectedindex, pero no se como funcionan....)

Respecto a lo de pasar el datareader a una tabla..... exactamente que significa que "oDataReader" sea del tipo "SQLite.SQLiteDataReader"? Si que veo que se trae cada vez una fila (dentro del bucle while), pero como puedo copiar eso a una tabla?

¿Se pueden usar dos fors al estilo C usando indices? tabla[10][10]

Se que son muchas dudas, pero estoy bastante novato en VB :S

Saludos y gracias por la ayuda.

Última edición por AlterElt; 08/02/2010 a las 16:10