Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > Lazarus, FreePascal, Kylix, etc.
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-08-2018
the walrus the walrus is offline
Miembro
 
Registrado: Apr 2018
Posts: 62
Poder: 1
the walrus Va por buen camino
filtrar registros en delphi

estoy trabajando en un proyecto en delphi xe6 y componentes ADO y un libro excel como base de datos. como filtrar registros desde un edit y que el resultado lo muestre en un dbgrid
Responder Con Cita
  #2  
Antiguo 23-08-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.579
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Y cuál es el problema y la pregunta?
Responder Con Cita
  #3  
Antiguo 23-08-2018
the walrus the walrus is offline
Miembro
 
Registrado: Apr 2018
Posts: 62
Poder: 1
the walrus Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
¿Y cuál es el problema y la pregunta?
mi pregunta es esta
¿como filtrar registros desde un edit y que el resultado lo muestre en un dbgrid?

y mi problema es este cuando compilo el codigo
"argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros "

mi codigo
Código Delphi [-]
DataSource1.DataSet.Close;
DataSource1.DataSet.Filter:= 'nombre like' + quotedstr(Edit1.Text + '%');
DataSource1.DataSet.Open;
DataSource1.DataSet.Filtered := true;
Responder Con Cita
  #4  
Antiguo 23-08-2018
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: Oct 2010
Ubicación: Lima - Peru
Posts: 285
Poder: 9
Caminante Va camino a la fama
Cita:
Empezado por the walrus Ver Mensaje
Código Delphi [-]DataSource1.DataSet.Close; DataSource1.DataSet.Filter:= 'nombre like' + quotedstr(Edit1.Text + '%'); DataSource1.DataSet.Open; DataSource1.DataSet.Filtered := true;

Hola


Si va a usar la propiedad filter no es necesario cerrar el dataset (DataSet.Close) solamente asigna false a filtered antes de asignar el filtro (DataSet.Filtered := false).


Saludos
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #5  
Antiguo 24-08-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.579
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
¿Faltará un espacio tras el like?
like '
Responder Con Cita
  #6  
Antiguo 24-08-2018
the walrus the walrus is offline
Miembro
 
Registrado: Apr 2018
Posts: 62
Poder: 1
the walrus Va por buen camino
no funciona, utilice los dos metos
Responder Con Cita
  #7  
Antiguo 24-08-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.579
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por the walrus Ver Mensaje
y mi problema es este cuando compilo el codigo
¿Cuándo compilas?
Responder Con Cita
  #8  
Antiguo 24-08-2018
the walrus the walrus is offline
Miembro
 
Registrado: Apr 2018
Posts: 62
Poder: 1
the walrus Va por buen camino
si, cuando compilo no hace la busqueda
Responder Con Cita
  #9  
Antiguo 24-08-2018
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: Sep 2004
Ubicación: En algún lugar.
Posts: 28.579
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por the walrus Ver Mensaje
si, cuando compilo no hace la busqueda
Es que cuando compila, no ejecuta. No busca cuando compila.
Creo que estás confundido con los conceptos. Tendrás que explicarnos más claramente las cosas.
Responder Con Cita
  #10  
Antiguo 24-08-2018
the walrus the walrus is offline
Miembro
 
Registrado: Apr 2018
Posts: 62
Poder: 1
the walrus Va por buen camino
Cita:
Empezado por Casimiro Notevi Ver Mensaje
Es que cuando compila, no ejecuta. No busca cuando compila.
Creo que estás confundido con los conceptos. Tendrás que explicarnos más claramente las cosas.
jajja bueno, el programa compila , cuando quiero hacer una busqueda no la realiza
Responder Con Cita
  #11  
Antiguo 25-08-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.115
Poder: 30
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por the walrus Ver Mensaje
mi pregunta es esta
¿como filtrar registros desde un edit y que el resultado lo muestre en un dbgrid?

y mi problema es este cuando compilo el codigo
"argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros "

mi codigo
Código Delphi [-]
DataSource1.DataSet.Close;
DataSource1.DataSet.Filter:= 'nombre like' + quotedstr(Edit1.Text + '%');
DataSource1.DataSet.Open;
DataSource1.DataSet.Filtered := true;
Como te indicó Caminante, ese código no es correcto.

Del siguiente modo tendría que filtrar sin problemas:
Código Delphi [-]
...
var
  DS: TDataSet;
begin
  DS := DataSource1.DataSet;

  if not DS.Active then DS.Open;  (* Esta línea es innecesaria si el DataSet está activo *)

  DS.Filtered := False;
  DS.Filter   := 'NOMBRE LIKE ' + QuotedStr(Edit1.Text + '%');
  DS.Filtered := True;
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #12  
Antiguo Hace 4 Semanas
the walrus the walrus is offline
Miembro
 
Registrado: Apr 2018
Posts: 62
Poder: 1
the walrus Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Como te indicó Caminante, ese código no es correcto.

Del siguiente modo tendría que filtrar sin problemas:
Código Delphi [-]
...
var
  DS: TDataSet;
begin
  DS := DataSource1.DataSet;

  if not DS.Active then DS.Open;  (* Esta línea es innecesaria si el DataSet está activo *)

  DS.Filtered := False;
  DS.Filter   := 'NOMBRE LIKE ' + QuotedStr(Edit1.Text + '%');
  DS.Filtered := True;
end;

Saludos
cuando realizo una búsqueda filtra pero cuando borro el filtro me aparce este error argumento incorrecto fuera de intervalos permitido o en conflictos con otros
Responder Con Cita
  #13  
Antiguo Hace 4 Semanas
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.115
Poder: 30
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Para orientarnos mejor sobre el problema, ¿ podrías poner la parte del código donde aplicas el filtro y la parte donde lo borras ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #14  
Antiguo Hace 4 Semanas
the walrus the walrus is offline
Miembro
 
Registrado: Apr 2018
Posts: 62
Poder: 1
the walrus Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Para orientarnos mejor sobre el problema, ¿ podrías poner la parte del código donde aplicas el filtro y la parte donde lo borras ?

Saludos
el codigo que utilizo es el mismo publicaste y con respecto de borrar el filtro me refiero cuando realizo una busqueda en el edit1 por ejemplo busco el registro con nombre 'pepe' realiza la búsqueda pero cuando borro por completo del edit1 me aparece el error que te comente antes.
Responder Con Cita
  #15  
Antiguo Hace 4 Semanas
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.115
Poder: 30
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.

Ahora entiendo..., podrías hacer:
Código Delphi [-]
...
var
  DS: TDataSet;
begin
  if Edit1.Text > '' then
  begin
    DS := DataSource1.DataSet;
    DS.Filtered := False;
    DS.Filter   := 'NOMBRE LIKE ' + QuotedStr(Edit1.Text + '%');
    DS.Filtered := True;
  end;  { ( opcional ) 
  else
    MessageBeep(MB_ICONERROR); }
end;

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #16  
Antiguo Hace 4 Semanas
the walrus the walrus is offline
Miembro
 
Registrado: Apr 2018
Posts: 62
Poder: 1
the walrus Va por buen camino
lo pude solucionar de esta forma

Código Delphi [-]
ADOQuery1.Close;
    ADOQuery1.SQL.Text :='Select * FROM mitabla WHERE nombre like '+ QuotedStr(edit1.text+'%');
    ADOQuery1.Open;
    ADOQuery1.Filtered := true;

gracias por sus respuestas
Responder Con Cita
  #17  
Antiguo Hace 4 Semanas
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: Oct 2010
Ubicación: Lima - Peru
Posts: 285
Poder: 9
Caminante Va camino a la fama
Hola


Si vas a filtrar usando SQL ya no es necesario usar la propiedad filter.


Saludos
__________________
Caminante, son tus huellas el camino y nada más; Caminante, no hay camino, se hace camino al andar.
Antonio Machado
Responder Con Cita
  #18  
Antiguo Hace 4 Semanas
Avatar de movorack
[movorack] movorack is offline
Miguel A. Valero
 
Registrado: Feb 2007
Ubicación: Bogotá - Colombia
Posts: 1.091
Poder: 13
movorack Va camino a la fama
Entonces validas si el edit tiene valor.

Código Delphi [-]
if Length(Trim(Edit.text)) > 0 then
begin
  //Acá aplicas el filtro como ya te explicaron
end
else
  Dataset.Filtered := False;
__________________
Buena caza y buen remar... http://mivaler.blogspot.com
Responder Con Cita
  #19  
Antiguo Hace 4 Semanas
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: Dec 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.115
Poder: 30
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola.
Cita:
Empezado por the walrus Ver Mensaje
lo pude solucionar de esta forma

Código Delphi [-]
ADOQuery1.Close;
    ADOQuery1.SQL.Text :='Select * FROM mitabla WHERE nombre like '+ QuotedStr(edit1.text+'%');
    ADOQuery1.Open;
    ADOQuery1.Filtered := true;

gracias por sus respuestas
En ese caso sería mejor que parametrices la consulta,
Código Delphi [-]
  ADOQuery1.Close;
  ADOQuery1.SQL.Text := 'SELECT * FROM MITABLA WHERE NOMBRE LIKE :PARAM';
  ADOQuery1.Parameters.ParamByName('PARAM').Value := Edit1.Text + '%';
  ADOQuery1.Open;
para evitar la inyección SQL.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #20  
Antiguo Hace 2 Semanas
the walrus the walrus is offline
Miembro
 
Registrado: Apr 2018
Posts: 62
Poder: 1
the walrus Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola.

Ahora entiendo..., podrías hacer:
Código Delphi [-]
...
var
  DS: TDataSet;
begin
  if Edit1.Text > '' then
  begin
    DS := DataSource1.DataSet;
    DS.Filtered := False;
    DS.Filter   := 'NOMBRE LIKE ' + QuotedStr(Edit1.Text + '%');
    DS.Filtered := True;
  end;  { ( opcional ) 
  else
    MessageBeep(MB_ICONERROR); }
end;

Saludos
tengo una duda tdataset es un adodataset
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Filtrar registros entre 2 fechas wilcg Conexión con bases de datos 2 15-03-2015 05:41:22
Filtrar registros por criterios wilcg SQL 2 22-08-2014 18:53:25
filtrar registros en rxMemoryData peccatum Varios 7 10-09-2012 01:57:00
Filtrar Registros entre fechas capitan_nemo Tablas planas 1 02-04-2007 08:12:55
Filtrar registros de Access 2000 con SQL camelumi SQL 1 02-04-2004 19:16:37


La franja horaria es GMT +2. Ahora son las 07:50:17.


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