Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Tablas planas
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-09-2008
bLiNdEN bLiNdEN is offline
Miembro
 
Registrado: sep 2007
Posts: 25
Poder: 0
bLiNdEN Va por buen camino
No puedo filtrar por dos campos

Hola muy buenas tardes tengan ustedes...

Estoy haciendo una base de datos donde tengo que filtrar dos campos a la vez pero no puedo y quisisera saber como hacerles, miren, esto es lo que estoy haciendo:

procedure TForm1.Edit1Change(Sender: TObject);
begin

// filtrar o localizar
if (not cbFiltrar.Checked) then begin
// Busqueda incremental
ClientDataSet1.Locate('Campo4', Edit1.Text, [loCaseInsensitive, loPartialKey]);

Exit;
end
else begin

// esto sería para filtrar
if (Edit1.Text = '') then
begin
ClientDataSet1.Filtered := false;
ClientDataSet1.Filter := '';
end
else begin
ClientDataset1.Open;
ClientDataSet1.Filter := '(Campo4 =' +QuotedStr(Edit1.Text) +') and (Campo5 = '+QuotedStr(Edit2.Text)+ ')';

ClientDataSet1.Filtered := True;


end;
end;
end;

y pues nomas no lo filtra.... por favor quien me pueda ayudar se lo agradeceria bastante.
Responder Con Cita
  #2  
Antiguo 10-09-2008
bLiNdEN bLiNdEN is offline
Miembro
 
Registrado: sep 2007
Posts: 25
Poder: 0
bLiNdEN Va por buen camino
jejeje otra preguntota despues de filtrar como le hago para eliminar los otros datos que no coinciden???

gracias
Responder Con Cita
  #3  
Antiguo 10-09-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 18
felipe88 Va por buen camino
Hola,
Bienvenido al Club Delphi, primero que todo siempre aconsejamos a los nuevos usuarios a que revisen la Guia de estilo y que además usen la Búsqueda de los foros
__________________
Web
Responder Con Cita
  #4  
Antiguo 10-09-2008
Avatar de felipe88
[felipe88] felipe88 is offline
Miembro Premium
 
Registrado: may 2007
Ubicación: Mi Valle del Cauca... Colombia!!!
Posts: 1.120
Poder: 18
felipe88 Va por buen camino
Usar las etiquetas [ delphi ][ /delphi ] sin los espacios...
Código Delphi [-]
procedure TForm1.Edit1Change(Sender: TObject);
begin
// filtrar o localizar
if (not cbFiltrar.Checked) then begin
// Busqueda incremental
  ClientDataSet1.Locate('Campo4', Edit1.Text, [loCaseInsensitive, loPartialKey]);
Exit;
end
else begin
// esto sería para filtrar
  if (Edit1.Text = '') then 
    begin
      ClientDataSet1.Filtered := false;
      ClientDataSet1.Filter := '';
   end
else 
  begin
    ClientDataset1.Open;
    ClientDataSet1.Filter := '(Campo4 =' +QuotedStr(Edit1.Text) +') and (Campo5 = '+QuotedStr(Edit2.Text)+ ')';
    ClientDataSet1.Filtered := True;
  end;
end;
end;
Ahora... ¿seguro que le estas pasando bien el filtro?
__________________
Web
Responder Con Cita
  #5  
Antiguo 10-09-2008
bLiNdEN bLiNdEN is offline
Miembro
 
Registrado: sep 2007
Posts: 25
Poder: 0
bLiNdEN Va por buen camino
sip.... puedo filtrar solo lo de el edit1 pero lo del edit2 nomas no lo hace... y revise todos los posts que hay y ninguno me ha funcionado....como le puedo hacer...eske hagan de cuenta que filtra el primer edit pero el segundo no lo filtra de la misma tabla
Responder Con Cita
  #6  
Antiguo 10-09-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por bLiNdEN Ver Mensaje
sip.... puedo filtrar solo lo de el edit1 pero lo del edit2 nomas no lo hace... y revise todos los posts que hay y ninguno me ha funcionado....como le puedo hacer...eske hagan de cuenta que filtra el primer edit pero el segundo no lo filtra de la misma tabla
Hola

A que te refieres con que filtra el primero edit y el segundo no, por lo que veo solo que un registro tenga los dos valores te lo va a mostrar, no uno u otro

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #7  
Antiguo 10-09-2008
bLiNdEN bLiNdEN is offline
Miembro
 
Registrado: sep 2007
Posts: 25
Poder: 0
bLiNdEN Va por buen camino
Hao!

mira eske por ejemplo si pongo solo:

ClientDataSet1.Filter := ('Campo4 =' + QuotedStr(Edit1.Text) );

me muestra lo que voy filtrando del edit pero no se como hacerle para que agarre el filtro del segundo edit ya le trate de mil maneras y naaaa pero aunque lo deje como está arriba hace lo mismo me filtra solo lo del primer edit
Responder Con Cita
  #8  
Antiguo 10-09-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por bLiNdEN Ver Mensaje
Hao!

mira eske por ejemplo si pongo solo:

ClientDataSet1.Filter := ('Campo4 =' + QuotedStr(Edit1.Text) );

me muestra lo que voy filtrando del edit pero no se como hacerle para que agarre el filtro del segundo edit ya le trate de mil maneras y naaaa pero aunque lo deje como está arriba hace lo mismo me filtra solo lo del primer edit
Sabes que seria bueno, que nos mostraras los datos de varios registros y nos digas que valores quieres filtrar.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #9  
Antiguo 10-09-2008
bLiNdEN bLiNdEN is offline
Miembro
 
Registrado: sep 2007
Posts: 25
Poder: 0
bLiNdEN Va por buen camino
ok mira:

tengo varios campos que se llaman: campo2,campo3,campo4,campo5 respectivamente y lo que quiero hacer es filtrar lo que viene en el campo4 para despues aplicar otro filtro para campo5 pero que sin se quite el filtro de campo4.....por ejemplo:

aplico filtro a campo4 (filtro Edit1 funciona correctamente)

selecciona: Ing. Industrial

aplico filtro a campo5 (filtro Edit2 ??)

seleccion: Quimica I

por lo que quedaria en la tabla Ing. Indutrial Quimica blabalbal


no se si me de a entender gracias
Responder Con Cita
  #10  
Antiguo 10-09-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por bLiNdEN Ver Mensaje
ok mira:

tengo varios campos que se llaman: campo2,campo3,campo4,campo5 respectivamente y lo que quiero hacer es filtrar lo que viene en el campo4 para despues aplicar otro filtro para campo5 pero que sin se quite el filtro de campo4.....por ejemplo:

aplico filtro a campo4 (filtro Edit1 funciona correctamente)

selecciona: Ing. Industrial

aplico filtro a campo5 (filtro Edit2 ??)

seleccion: Quimica I

por lo que quedaria en la tabla Ing. Indutrial Quimica blabalbal


no se si me de a entender gracias
Ok, ya esta mejor.

Lo que tu necesitas es un ordenamiento por el campo4 y despues por el campo5, pero eso no lo vas a poder hacer con una Tabla, que me imagino estas usando, para esos menesteres necesitas una sentencia SQL mas o menos de esta forma

Código Delphi [-]
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text := 'select * from TABLA '+
                   ' where CAMPO4 = '+QuotedStr(Edit1.Text)+
                   ' order by CAMPO4,CAMPO5';
Query1.Open;

A ver si así obtienes lo que necesitas.

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #11  
Antiguo 11-09-2008
bLiNdEN bLiNdEN is offline
Miembro
 
Registrado: sep 2007
Posts: 25
Poder: 0
bLiNdEN Va por buen camino
Una molestia del tamaño del mundo no me podrias explicar paso por paso??

eske soy novato en bases de datos, mira:

estoy jalando el archivo a una DBgrid desde microsoft access y de ahi empieza el show asi es...eske la vvd no se a que te refieres con tabla


muchas gracias y perdon por la molestia
Responder Con Cita
  #12  
Antiguo 12-09-2008
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.556
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por bLiNdEN Ver Mensaje
Una molestia del tamaño del mundo no me podrias explicar paso por paso??

eske soy novato en bases de datos, mira:

estoy jalando el archivo a una DBgrid desde microsoft access y de ahi empieza el show asi es...eske la vvd no se a que te refieres con tabla


muchas gracias y perdon por la molestia
Puedes detellarnos que componentes estas usando para conectar a tu base access?

Salud OS
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #13  
Antiguo 12-09-2008
bLiNdEN bLiNdEN is offline
Miembro
 
Registrado: sep 2007
Posts: 25
Poder: 0
bLiNdEN Va por buen camino
Smile

TADOQuery=ADOQ(nombre)
TDataSetProvider=DSProvider(nombre)
TClientDataSet=ClientDataSet1(nombre)
TDataSource=DataSource1(nombre)

ClientDataSet1: TClientDataSet;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
Edit1: TEdit;
Label2: TLabel;
StatusBar1: TStatusBar;
ADOQ: TADOQuery;
DSProvider: TDataSetProvider;
lblData: TLabel;
cbFiltrar: TCheckBox;


parte del codigo:

[/delphi]

procedure TForm1.Edit1Change(Sender: TObject);
begin

// filtrar o localizar
if (not cbFiltrar.Checked) then begin
// Busqueda incremental
ClientDataSet1.Locate('Campo4', Edit1.Text, [loCaseInsensitive, loPartialKey]);
Exit;
end
else begin

// esto sería para filtrar
if (Edit1.Text = '') then
begin
ClientDataSet1.Filtered := false;
ClientDataSet1.Filter := '';
end
else begin
ClientDataset1.Open;
ClientDataSet1.Filter := ('Campo4 =' + QuotedStr(Edit1.Text) );
ClientDataSet1.Filtered := True;


end;
end;
end;
procedure TForm1.FormShow(Sender: TObject);
var
path:string;
begin

Path := ExtractFilePath(Application.ExeName) + 'Data11.xml';

// Existe el XML?
if FileExists(path) then begin
ClientDataSet1.LoadFromFile(path);
lbldata.Caption := ExtractFileName(path);
Exit;
end;

// Probar con el MDB
Path := ExtractFilePath(Application.ExeName) + 'Data.MDB';
// Existe el MDB?
if FileExists(path) then begin
ClientDataSet1.ProviderName := 'DSProvider';
ADOQ.Open;
ClientDataSet1.Active := True;
ADOQ.Close;
ClientDataSet1.ProviderName := '';
lbldata.Caption := ExtractFileName(path);
Exit;
end;

// Si llega aqui es que no existe ninguno de los dos.
MessageDlg('No se ha encontrado ninguna fuente de datos; Data.XML o Data.MDB', mtWarning, [mbOK], 0);


end;


muchisimas gracias..
Responder Con Cita
  #14  
Antiguo 17-09-2008
bLiNdEN bLiNdEN is offline
Miembro
 
Registrado: sep 2007
Posts: 25
Poder: 0
bLiNdEN Va por buen camino
alguien que me pueda ayudar???? ya lo intente de muchisimas formas y nadae perdon por la molestia pero la verdad no se mucho de bases de datos es la primera vez que hago una

gracias
Responder Con Cita
  #15  
Antiguo 16-10-2008
Avatar de RebeccaGL
RebeccaGL RebeccaGL is offline
Miembro
 
Registrado: ene 2008
Posts: 199
Poder: 17
RebeccaGL Va por buen camino
La condición esta mal. Ponle >= y <=

Código Delphi [-]
 
procedure TForm1.Edit1Change(Sender: TObject);
begin
// filtrar o localizar
if (not cbFiltrar.Checked) then begin
// Busqueda incremental
  ClientDataSet1.Locate('Campo4', Edit1.Text, [loCaseInsensitive, loPartialKey]);
Exit;
end
else begin
// esto sería para filtrar
  if (Edit1.Text = '') then 
    begin
      ClientDataSet1.Filtered := false;
      ClientDataSet1.Filter := '';
   end
else 
  begin
    try
      ClientDataset1.Open;
      ClientDataSet1.Filter := '(Campo4 >=' +QuotedStr(Edit1.Text) +') and (Campo5 <= '+QuotedStr(Edit2.Text)+ ')';
      ClientDataSet1.Filtered := True;
    except
      ClientDataSet1.Filtered := false;
      ClientDataSet1.Filter := '';
    end;
  end;
end;
end;

Te Explico si es (igual Edit1.text) no podra ser (igual a edit2.text)
Asi es que lo que tienes que hacer es, poner entre rangos osea:

de 1 a 100 solo quiero de 10 a 20 seria asi

if (>= 10) and (<= 20) then ...

Lo mismo con los flitros.

Saludos

Última edición por RebeccaGL fecha: 16-10-2008 a las 16:28:58.
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 tabla por dos campos Sayuri Conexión con bases de datos 12 10-10-2010 17:02:03
Filtrar Tquery con campos calculados nelem Internet 0 19-05-2008 09:15:46
Filtrar por Campos Calculados dandia28 Conexión con bases de datos 2 02-05-2008 21:32:46
Filtrar campos DateTime MARYLOSO Impresión 5 02-02-2007 20:23:18
filtrar campos lookup allende Conexión con bases de datos 2 08-12-2003 19:17:34


La franja horaria es GMT +2. Ahora son las 17:41:40.


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