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 05-08-2019
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
Ayuda con Dataset.Filter

Buenas, bendiciones para todos

Estoy utilizando DElphi 2009 y Sql server. Estoy usando DBEDIT con ADO. En un modulo de registro de pacientes tengo un EDIT para hacer una busqueda. Quiero filtrar el dataset para que en el mismo EDIT se pueda buscar por id, nombres, apellidos o cedula.

Estoy utilizando el siguiente codigo, pero me esta dando error:

Código Delphi [-]
       if Length(Trim(Ebuscapacientes.text)) > 0 then
begin
       DSpacientes.DataSet.Filtered:=false;
       DSpacientes.dataset.Filter := '[nombres] like '+''''+'%'+Ebuscapacientes.Text+'%'+'''' or '[apellidos] like '+''''+'%'+Ebuscapacientes.Text+'%'+'''';
       DSpacientes.DataSet.Filtered :=true;
end
else
       DSpacientes.Dataset.Filtered := False;

Espero que me puedan ayudar. Gracias de antemano
Responder Con Cita
  #2  
Antiguo 05-08-2019
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
Y... ¿que error genera?
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #3  
Antiguo 05-08-2019
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
Ese es el error

[DCC Error] Upacientes.pas(298): E2015 Operator not applicable to this operand type
Responder Con Cita
  #4  
Antiguo 05-08-2019
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
El OR debería ser parte de la cadena.

Trata de hacer la cadena mas fácil de manejar, tal vez puedas usar format:

Código Delphi [-]
  DSpacientes.dataset.Filter := '';
  if not Trim(Ebuscapacientes.Text).IsEmpty then
    DSpacientes.dataset.Filter := Format('([nombres] like ''%%%0:s%%'') or ([apellidos] like ''%%%:0s%%'') or ([cedula] like ''%%%:0s%%'')', [Trim(Ebuscapacientes.text)]);
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #5  
Antiguo 05-08-2019
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
A que clase pertenece isEMpty. Porque me da error
Responder Con Cita
  #6  
Antiguo 05-08-2019
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
Debe ser que usas una versión anterior de Delphi.

isEmpty es una función en el helper del tipo de dato String. Es parte de la VCL desde XE3 en adelante (creo)

Código Delphi [-]
Trim(Ebuscapacientes.text).isEmpty = Length(Trim(Ebuscapacientes.text)) = 0

Edito: Si,ya leí que usas Delphi 2009
__________________
Buena caza y buen remar... http://mivaler.blogspot.com

Última edición por movorack fecha: 05-08-2019 a las 17:50:49.
Responder Con Cita
  #7  
Antiguo 05-08-2019
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
Gracias Movorack, me sirvio de mucho.

Asi quedo el codigo de manera funcional

Código Delphi [-]
 if Length(Trim(Ebuscapacientes.text)) >0 then
  begin
  DSpacientes.dataset.Filter := Format('([nombres] like ''%%%0:s%%'') or ([apellidos] like ''%%%:0s%%'') or ([numero documento] like ''%%%:0s%%'')', [Trim(Ebuscapacientes.text)]);
   DSpacientes.DataSet.Filtered :=true;

  end
  else
    DSpacientes.Dataset.Filtered := False;

end;
Responder Con Cita
  #8  
Antiguo 05-08-2019
donpedro donpedro is offline
Miembro
 
Registrado: nov 2009
Posts: 102
Poder: 0
donpedro cantidad desconocida en este momento
Un detalle se me olvido

Tengo el campo ID int identity en la base de datos, y cuando agrego ese campo en la busqueda me da un error. El error dice: No se puede abrir el filtro

Que puedo hacer ahi??? y disculpa
Responder Con Cita
  #9  
Antiguo 05-08-2019
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
creo que el tema de filtros en algun momento se podria lento dependiendo de la cantidad de registros de la tabla

en su lugar porque no utilizas un query para extraer los registros que deseas?
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #10  
Antiguo 06-08-2019
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
Cita:
Empezado por donpedro Ver Mensaje
Un detalle se me olvido

Tengo el campo ID int identity en la base de datos, y cuando agrego ese campo en la busqueda me da un error. El error dice: No se puede abrir el filtro

Que puedo hacer ahi??? y disculpa
Debes revisar bien la forma en que armas los filtros con el tipo de dato que deseas filtrar.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #11  
Antiguo 06-08-2019
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
Cita:
Empezado por oscarac Ver Mensaje
creo que el tema de filtros en algun momento se podria lento dependiendo de la cantidad de registros de la tabla

en su lugar porque no utilizas un query para extraer los registros que deseas?
¡Si! Se pone lento cuando son muchos registros. Consultar los datos nuevamente es buena opción.
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
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
Copiar el contenido de un DataSet a otro DataSet Javi2 Varios 82 22-11-2022 09:26:16
ayuda trabajar con datos del dataset jans.albornoz Conexión con bases de datos 13 24-07-2012 20:57:43
Actualizar un dataset desde otro dataset jafera Conexión con bases de datos 17 18-12-2008 23:57:10
ayuda con dataset Memo6015 Conexión con bases de datos 7 29-09-2008 14:34:19
Ayuda en la creación grupos sin dataset droide01 Impresión 0 03-01-2007 21:00:58


La franja horaria es GMT +2. Ahora son las 10:03:36.


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