Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 2
Ir a la página 1, 2  Siguiente
 
Quiero Que Al Escribir En El Textbox Se Vaya Buscando En El Gridview
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje 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
 



 
reyes - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Quiero Que Al Escribir En El Textbox Se Vaya Buscando En El Gridview 
 
Hola Reyes

Una pregunta ¿Como cargas el GridView?
 



 
whisper - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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
 



 
reyes - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 
ahtonio - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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 
vicr - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje 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.
 



 
whisper - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Buscando Ejemplo De OpenGL netking86 General 0 Lunes, 28 Marzo 2011, 14:20 Ver último mensaje
netking86
No hay nuevos mensajes Como Escribir 2 Textbox Al Mismo Tiempo O ... metalgearxd General 2 Sabado, 09 Marzo 2013, 00:40 Ver último mensaje
metalgearxd
No hay nuevos mensajes Quiero Guardar Los Dato Del Gridview Pero ... reyes Bases de Datos 4 Martes, 05 Abril 2016, 23:40 Ver último mensaje
jguardon
No hay nuevos mensajes Buscando Opinión imagomundi Bases de Datos 5 Miercoles, 01 Agosto 2018, 07:56 Ver último mensaje
calcena
 

Publicar nuevo tema  Responder al tema  Página 1 de 2
Ir a la página 1, 2  Siguiente

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
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



  

 

cron