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 Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-08-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
  #2  
Antiguo 17-09-2018
the walrus the walrus is offline
Miembro
NULL
 
Registrado: abr 2018
Posts: 66
Poder: 7
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
  #3  
Antiguo 17-09-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
  #4  
Antiguo 17-09-2018
the walrus the walrus is offline
Miembro
NULL
 
Registrado: abr 2018
Posts: 66
Poder: 7
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
  #5  
Antiguo 18-09-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
  #6  
Antiguo 18-09-2018
the walrus the walrus is offline
Miembro
NULL
 
Registrado: abr 2018
Posts: 66
Poder: 7
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
  #7  
Antiguo 18-09-2018
Avatar de Caminante
Caminante Caminante is offline
Miembro
 
Registrado: oct 2010
Ubicación: Lima - Peru
Posts: 338
Poder: 14
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
  #8  
Antiguo 18-09-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
  #9  
Antiguo 27-09-2018
the walrus the walrus is offline
Miembro
NULL
 
Registrado: abr 2018
Posts: 66
Poder: 7
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
  #10  
Antiguo 27-09-2018
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
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
tengo una duda tdataset es un adodataset
TDataSet es la clase base para todos los componentes de acceso a datos: TDataSet.

Es decir que cualquiera (o todas) de las siguientes asignaciones son válidas:
Código Delphi [-]
...
var
  DS : TDataSet;
begin
  // BDE
  DS := Query1;
  DS := Table1;
  // ADO
  DS := ADOQuery1;
  DS := ADOTable1;
  // IBX
  DS := IBQuery1;
  DS := IBDataSet1;
  // dbExpress
  DS := SQLQuery1;
  DS := SQLTable1;
  ...


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #11  
Antiguo 18-09-2018
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
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
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
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 04:31:24.


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