Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 20-06-2022
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Unhappy Al quitar un filtrado a la tabla el Ggrid se queda vacio.

Saludos, les comento algo curioso que me pasa, tengo un DBGrid enlazado a un Query con la siguiente consulta:

Código Delphi [-]
with QRecibidas do
  Begin
  Close;
  SQL.Clear;
  SQL.Text:='SELECT CodOrden, Fecha, Hora, Estado, Nombre, Entrega_Estimada, Usuario, Nota, '+
            'Total, Pagado FROM Ordenes WHERE Estado = ''Recibido''';
  Open;
  End;

Y luego hago el siguiente filtrado:
Código Delphi [-]
if EBuscar.Text <> EmptyStr then
  begin
    QRecibidas.Filtered:= False;
    QRecibidas.Filter  := 'Nombre like '+QuotedStr('%'+ EBuscar.Text + '%');
    QRecibidas.Filtered:= True;
    end
    Else
    QRecibidas.Filtered:= False;
  end;

Resulta que cuando escribo algun nombre que si esta en la tabla, y borro el contenido del Edit todo funciona bien, pero cuando escribo alguna letra o frase de la cual no existe en la tabla y la tabla se queda vacia, y elimino el contenido del edit, el dbgrid se queda vacio a menos que escriba otra cosa(hasta un espacio vacio) que si este en algun registro de la tabla y vuelva a borrar entonces aparecen todos los registros nuevamente.


Alguien tiene alguna idea?
Responder Con Cita
  #2  
Antiguo 20-06-2022
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
particularmente no uso filtros porque no conozco la cantidad de registros que tendra la tabla
lo que hago es en el query aplicar la busqueda

en el evento onchange del edit genero la cadena del query y lo voy abriendo mientras se escribe, como una busqueda secuencial
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 21-06-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por feliz-58 Ver Mensaje
...y elimino el contenido del edit, el dbgrid se queda vacio a menos que escriba otra cosa(hasta un espacio vacio)
¿Estás seguro de que en ese caso no está ejecutndo una sentencia incorrecta?
No parece que el código que has puesto tenga nada "raro".
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #4  
Antiguo 21-06-2022
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Cita:
Empezado por Neftali [Germán.Estévez] Ver Mensaje
¿Estás seguro de que en ese caso no está ejecutndo una sentencia incorrecta?
No parece que el código que has puesto tenga nada "raro".
Lo he revisado y probado de diferentes formas, incluso intente al final cuando se quita la tabla del modo filtrado, cerrandola y abriendola de nuevo y no lo aparecen los registros aun. Es super extraño, sera cosas del IDE? tengo 10.4.

Esta mañana probé esto:
Código SQL [-]
SQL.Text:='SELECT CodOrden, Fecha, Hora, Estado, Nombre, Entrega_Estimada, Usuario, Nota, '+
                'Total, Pagado FROM Ordenes WHERE Nombre LIKE :Busq';
Parameters.ParamByName('Busq').Value := QuotedStr('%'+EBuscar.Text+'%');

y de esta forma hace lo mismo, al borrar todo la tabla se queda vacia.
Obviamente lo coloqué en el Onchange del edit....

Última edición por feliz-58 fecha: 21-06-2022 a las 16:48:46.
Responder Con Cita
  #5  
Antiguo 21-06-2022
feliz-58 feliz-58 is offline
Miembro
 
Registrado: sep 2012
Posts: 314
Poder: 12
feliz-58 Va por buen camino
Cita:
Empezado por feliz-58 Ver Mensaje
Lo he revisado y probado de diferentes formas, incluso intente al final cuando se quita la tabla del modo filtrado, cerrandola y abriendola de nuevo y no lo aparecen los registros aun. Es super extraño, sera cosas del IDE? tengo 10.4.

Esta mañana probé esto:
Código SQL [-]
SQL.Text:='SELECT CodOrden, Fecha, Hora, Estado, Nombre, Entrega_Estimada, Usuario, Nota, '+
                'Total, Pagado FROM Ordenes WHERE Nombre LIKE :Busq';
Parameters.ParamByName('Busq').Value := QuotedStr('%'+EBuscar.Text+'%');

y de esta forma hace lo mismo, al borrar todo la tabla se queda vacia.
Obviamente lo coloqué en el Onchange del edit....
A fin de cuentas, eliminé los componentes en cuestion, los volvi a colocar, y en la consulta utilice esta:
Código Delphi [-]
SQL.Text:='SELECT CodOrden, Fecha, Hora, Estado, Nombre, Entrega_Estimada, Usuario, Nota, '+
              'Total, Pagado FROM Ordenes WHERE Nombre LIKE ' +quotedstr('%' + EBuscar.Text + '%');

y en el else, utilice esta:
Código Delphi [-]
'SELECT CodOrden, Fecha, Hora, Estado, Nombre, Entrega_Estimada, Usuario, Nota, '+
            'Total, Pagado FROM Ordenes WHERE Estado = ''Recibido''';

Que es la consulta original, y resolvió todo.
Cosas extrañas de la vida
Responder Con Cita
  #6  
Antiguo 21-06-2022
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.346
Poder: 20
movorack Va camino a la famamovorack Va camino a la fama
Aunque ya nos dijiste que encontraste una solución te comento lo siguiente para que no quede como una "cosa[s] extraña[s] de la vida"

Por lo que cuentas y muestras, yo pienso que el inconveniente que tienes es por la línea donde validas que el edit tenga algo de texto.

Código Delphi [-]
//Aquí estás validando que el edit tenga texto
if EBuscar.Text <> EmptyStr then
  begin
    QRecibidas.Filtered:= False;
    QRecibidas.Filter  := 'Nombre like '+QuotedStr('%'+ EBuscar.Text + '%');
    QRecibidas.Filtered:= True;
    end
    Else
    QRecibidas.Filtered:= False;
  end;

Como el evento se dispara cuando el texto cambia, aunque hayas borrado todo, creo que el filtro queda activo con algún carácter que impide mostrar todo el contenido de la tabla. Es por ello que al agregar una sentencia por defecto en el ELSE obtienes un resultado.

Con el filtro hubieses podido limpiar el filtro cuando el texto estuviese vacío.

Código Delphi [-]
if Trim(EBuscar.Text) <> EmptyStr then
begin
  QRecibidas.Filtered:= False;
  QRecibidas.Filter  := 'Nombre like '+QuotedStr('%'+ EBuscar.Text + '%');
  QRecibidas.Filtered:= True;
end
ELSE
  QRecibidas.Filtered:= False;

Ahora, debes evaluar cual método te es mas conveniente al realizar el cambio de texto. ir a la base de datos y realizar la consulta o realizar un filtro sobre el dataset que ya tienes en memoria. Igual, ambos tienen un costo en recursos y tiempo en la aplicación.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #7  
Antiguo 22-06-2022
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.275
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Aunque ya funciona y sólo como comentario, cuando utilizas el ParamByName, no hare falta realizar un QuotedStr. Según el tipo del parámetro se añadirán las comillas si hacen falta.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Aplicación se queda congelada !!!! david_uh Varios 2 20-10-2012 03:08:23
Cursor no recorre toda la tabla, se queda a medias arrakshe MySQL 2 12-07-2012 16:07:13
Reus se queda sin follódromo. marcoszorrilla La Taberna 4 27-07-2008 19:09:45
Filtrado de una tabla. fortran Conexión con bases de datos 14 01-08-2003 11:32:41
Filtrado de una tabla. fortran Conexión con bases de datos 1 24-07-2003 14:11:53


La franja horaria es GMT +2. Ahora son las 00:43:45.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi