|
Página 1 de 2
|
Quiero Que Al Escribir En El Textbox Se Vaya Buscando En El Gridview
Autor |
Mensaje |
reyes
Usuario
Registrado: Marzo 2016
Mensajes: 11
Edad: 32
|
Quiero Que Al Escribir En El Textbox Se Vaya Buscando En El Gridview
quiero que al escribir en el textbox se vaya buscando en el gridview
|
#1 Viernes, 25 Marzo 2016, 17:43 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Quiero Que Al Escribir En El Textbox Se Vaya Buscando En El Gridview
¿ Algo como esto pero aplicado a un GridView ?.
http://foro.gambas-es.org/viewtopic...ht=letra++letra
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#2 Viernes, 25 Marzo 2016, 21:19 |
|
|
whisper
Juan Carlos Dominguez
Aprendiz
Registrado: Abril 2010
Mensajes: 76
Edad: 62 Ubicación:
|
Re: Quiero Que Al Escribir En El Textbox Se Vaya Buscando En El Gridview
Hola Reyes
Una pregunta ¿Como cargas el GridView?
|
#3 Viernes, 25 Marzo 2016, 22:40 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Quiero Que Al Escribir En El Textbox Se Vaya Buscando En El Gridview
Reyes:
Citar:
asi no porque el gridview esta conectado ala base de datos, lo que yo quiero es que al yo escribir en el textbox los nombre de vallan buscando un el data gridview
De nuevo, no se ve mucha dificultad. Es una consulta.
Tendrás que presentar antes los datos de alguna manera y luego hacer la consulta que quieres hacer con el textbox.
¿ Esa consulta va ir cambiando por cada letra que escribes ?. En el caso de una base de datos enorme, no creo que sea lo mejor.
Si sabes como crear una consulta. Es cuestión de ir añadiendo letras a la palabra que quieras consultar, formando una cadena mayor.
Así a cada pulsación de cada letra se realiza la consulta. Pero eso conlleva un problema.
Lo más probable es que escribas más rápido que la respuesta de la consulta.
Puede que hasta que la primera consulta no haya terminado y ya estés comenzando una nueva, cada vez que escribes una letra.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#4 Sabado, 26 Marzo 2016, 09:29 |
|
|
reyes
Usuario
Registrado: Marzo 2016
Mensajes: 11
Edad: 32
|
Re: Quiero Que Al Escribir En El Textbox Se Vaya Buscando En El Gridview
los datos estan cargado a una base de datos solo es hacer lo del textbox
|
#5 Sabado, 26 Marzo 2016, 12:41 |
|
|
ahtonio
Programador
Registrado: Octobre 2009
Mensajes: 144
Edad: 58 Ubicación: Zaragoza
|
Re: Quiero Que Al Escribir En El Textbox Se Vaya Buscando En El Gridview
Hola Reyes. Tengo una consulta (Clase) hecha ya en Gambas2 hace tiempo y me ha servido sin cambios en Gambas3.
Yo uso el evento Change del TextBox. Cada vez que se pulsa una tecla llamo a un metodo privado de la clase que puede ser perfectamente un procedimiento de tu formulario (sub) en el que cargo los datos y hago la llamada a la base de datos construyendo la consulta con un LIKE para que me devuelva todos los registros que contienen la cadena que está escrita en el textbox y si no devuelve ningún dato aviso al usuario con un msgBox y selecciono todo el contenido del textbox para que si quiere vuelva a empezar.
Public Sub txtbusca_Change()
Util.amayusculas(txtbusca)
cargaDatos()
End
En el método que carga datos reconfiguro el gridwiev y muestro los datos devueltos por la consulta. No se si te servira como ejemplo pero te puede dar ideas.
Private Sub cargaDatos()
Dim ok As Byte
Dim i, j, ancho, colAncho As Integer
Dim strqry As String = "SELECT "
Dim campo, strbusca As String
Dim hCampo As ResultField
'Componemos la sentencia SELECT campo 1, campo 2, campo N FROM Tabla
For Each campo In arrCampos
strqry &= campo
If campo = arrCampos[arrCampos.Count - 1] Then
strqry &= " "
Else
strqry &= ", "
Endif
Next
strqry &= "FROM " & strTabla & " "
strbusca = Trim(txtbusca.Text)
If txtbusca.Text = "" Then
strqry &= "ORDER BY " & searchCampo
Else
strqry &= "WHERE " & searchCampo & " LIKE '%" & strbusca & "%' "
strqry &= "ORDER BY " & searchCampo
Endif
rst = db.Current.Exec(strqry)
grdsel.Rows.Count = 0
If Not rst.Available Then
ok = Message.Error("No existen datos para la seleccion")
If txtbusca.Pos > 0 Then
txtbusca.Text = Left(txtbusca.Text, txtbusca.Pos - 1)
cargaDatos()
Else
Message.Error("La tabla " & strTabla & " no contiene registros para selección")
btncancel_Click()
Endif
Endif
With grdsel
.Header = GridView.Horizontal
.Rows.Count = rst.Count
.Columns.Count = rst.Fields.Count
.Columns.Resizable = True
i = 0
ancho = 0
For Each hCampo In rst.Fields
If i = 0 Then 'Si es la primera no mostrar, es el campo a devolver, la clave Integer
.Columns[i].Width = 0 'por tanto el ancho de columna = 0
Else
.Columns[i].Title = strCampos[i] 'Titulo de la columna
'Hacemos esta distinción porque si pasamos una fecha como tipo de dato, length es 0 y no se puede ver
If hCampo.Length = 0 Then
colAncho = grdsel.Font.TextWidth(String(10, "X"))
Else
colAncho = grdsel.Font.TextWidth(String(hCampo.Length, "X")) + 5
Endif
If colAncho > 250 Then colAncho = 250 'Ancho de la columna + 10 px si no excede de 250
.Columns[i].Width = colAncho
ancho += .Columns[i].Width 'Incrementamos suma del ancho de todas las columnas
Endif
Inc i
Next
End With
'ancho += 40
If ancho > Desktop.Width Then 'Si el ancho total es mayor que el de la pantalla
Me.Width = Desktop.Width 'Ancho del Grid = Ancho de pantalla
Else
Me.Width = ancho 'de otro modo, ancho del Grid = suma de los anchos de las columns
Endif
Me.Center() 'Lo centramos en pantalla
'Cargamos los datos en el Grid
i = 0
For Each rst
For j = 0 To grdsel.Columns.Count - 1
grdsel[i, j].Text = rst[arrCampos[j]]
Next
Inc i
Next
'Situamos en el registro activo si es la primera vez
If primeraSeleccion > 0 Then
For i = 0 To grdsel.Rows.Count - 1
If Val(grdsel[i, 0].Text) = primeraSeleccion Then
grdsel.Select(i, 1)
primeraSeleccion = 0
Break
Endif
Next
Else
grdsel.Select(0, 1)
Endif
txtbusca.SetFocus
End
Verás que hay muchas variables como tabla, un array de campos, etc. por que es genérica para que valga como clase a la que llamar con una colección que paso al constructor con los datos de tabla y campos a mostrar así como títulos de cada campo, etc. pero es fácil sustituir strTabla por el nombre de la tabla por ej. Además como no se cuantos campos recibo ni su longitud, tengo que calcular el ancho del grid y que no sobrepase el ancho de la pantalla, así pues hay código que te sobra pero ahí está.
La base de datos que consulto mas grande es de unos 10.000 registros y funciona (Sqlite3)
Espero te ayude
Un saludo
última edición por ahtonio el Sabado, 26 Marzo 2016, 13:42; editado 1 vez
|
#6 Sabado, 26 Marzo 2016, 13:36 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Quiero Que Al Escribir En El Textbox Se Vaya Buscando En El Gridview
Estuve intentando hacer algo parecido a lo que ha comentado Reyes, pero no di con la forma de hacerlo correctamente.
En la base que uso para el ejemplo, mi tabla se llama "armario" y tengo una serie de componentes.
Ejemplo, puedo tener Resistencias y Semiconductores
Cuando hice la consulta general use esta:
SELECT * FROM armario WHERE TipoComponente LIKE '%R%'
Mostrándose ambas palabras. Resistencias y Semiconductores, ya que ambas incluyen la "R".
Ahora como solo quiero que me muestre Resistencias. Usé:
SELECT * FROM armario WHERE TipoComponente LIKE 'R%'
Se ejecutó correctamente y se mostraron solo Resistencias.
Haciendo esa sentencia en SQL no he tenido problema, pero para hacerla luego en gambas, (la concatenación) no resulta fácil.
¿ Es está la adecuada ?. Mi idea es que voy añadiendo letras a la variable tipo que se va concatenando a medida que escribo en la caja de texto.
orden = "Select * from Armario where TipoComponente like " & Chr$(34) & "'" & tipo & "%" & "'" & Chr$(34)
Debo controlar que el contenido de la caja de texto tenga algo, claro.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
|
#7 Martes, 29 Marzo 2016, 12:39 |
|
|
Shell
Analista Programador
Registrado: Marzo 2010
Mensajes: 5278
Edad: 53 Ubicación: Al otro lado de la pantalla
|
Re: Quiero Que Al Escribir En El Textbox Se Vaya Buscando En El Gridview
Acabo de ver en que fallaba mi consulta.
Me encuentro a veces que al traducir la sentencia de SQL a gambas, me encuentro problemas al concatenar.
No he usado comilla simple, cosa que si se hace en una sentencia SQL. " y no '
Bien, así es como queda y funciona. Para Resistencia y Semiconductores.
orden = "Select * from Armario where TipoComponente like " & Chr$(34) & "%" & tipo & "%" & Chr$(34)
Para solo los que comienzan con una letra. O bien R de resistencia, o S de semiconductor.
orden = "Select * from Armario where TipoComponente like " & Chr$(34) & tipo & "%" & Chr$(34)
¿ Y el problema de la comilla simple ?.
Fijaros, yo en sqliteman puedo hacer esto:
SELECT * FROM armario WHERE TipoComponente LIKE '%R%'
Pero en gambas debo usar dobles comillas.
En cierta forma hace la misma función.
Saludos
=================== Gambas Básico
"No es un bug, es una característica no documentada"
última edición por Shell el Martes, 29 Marzo 2016, 13:22; editado 1 vez
|
#8 Martes, 29 Marzo 2016, 13:21 |
|
|
vicr
Técnico Programador
Registrado: Septiembre 2013
Mensajes: 158
Edad: 47
|
Re: Quiero Que Al Escribir En El Textbox Se Vaya Buscando En El Gridview
Hola, Shell.
¿Y si lo haces así?
conexion.Exec("SELECT * FROM Armario WHERE TipoComponente LIKE '%&1%'", letrasIngresadasPorUsuario )
siendo "letrasIngresadasPorUsuario", justamente, el string ingresado por el usuario.
(Más tarde haré una prueba de ello, para saber si funcionaría con ".Edit" también)
última edición por vicr el Martes, 29 Marzo 2016, 13:38; editado 1 vez
|
#9 Martes, 29 Marzo 2016, 13:37 |
|
|
whisper
Juan Carlos Dominguez
Aprendiz
Registrado: Abril 2010
Mensajes: 76
Edad: 62 Ubicación:
|
Re: Quiero Que Al Escribir En El Textbox Se Valla Buscando En El Gridview
Hola a todos
Hago esta pregunta acá, sin abrir otro tema, porque me parece que tiene que ver con lo mismo. Si no es así lo movemos de lugar.
Yo uso en algunos de los proyectos que estoy haciendo la misma consulta que puso vicr en su última respuesta. Con ella puedo fitrar los resultados de la consulta y mostrar los que quiero el el grid.
Mi pregunta ahora es: ¿Hay alguna forma de que los datos no se filtren y el registro seleccionado vaya cambiando según escriba en el textbox? No se si me hice entender, espero que si, cualquier duda trato de aclararlo.
|
#10 Martes, 29 Marzo 2016, 15:33 |
|
|
|
Temas parecidos
Temas parecidos
|
Página 1 de 2
|
Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado Usuarios registrados conectados: Ninguno
|
No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas No puede adjuntar archivos Puede descargar archivos No puede publicar eventos en el calendario
|
|
|
|
|