Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 11-10-2006
kia kia is offline
Miembro
 
Registrado: jul 2003
Posts: 78
Poder: 23
kia Va por buen camino
Thumbs up Siguiendo el hilo

Hola Las respuestas son voluntarias. Despues de muchas ayudas recibidas. no estaria bien que me las guardara. Asi pues solucionado el problema.Lo posteo para todos.Kia

Funciona de maravilla.
Código Delphi [-]
//Sustituir DMDatos.Dsetequipos por vuestro Dataset.
procedure TV_equipo.Filtrar(Sender: TObject);
const
 TiposConComillas:set of TfieldType
 =[ftstring, ftdate, fttime,ftdatetime];
 var
 Campo, Operador, Valor, sino:string;
 I:integer;
begin
  sino:='';
  if sender= migual then
     operador:='='
   else if sender= mMayorigual then
     operador:='>='
   else if sender= mMenorigual then
     operador:='<='
   else
     operador:='<>';

  //extraemos nombre del campo
  Campo:=Rxdbgrid1.SelectedField.FieldName;
  //extraer y dar formato al valor
  if rxdbgrid1.SelectedField.DataType in TiposconComillas then
     BEGIN
     if rxdbgrid1.SelectedField.DataType=ftdate then //fechas
        begin
        valor:=Rxdbgrid1.SelectedField.AsString;
        valor:=QuotedStr(FormatDateTime('yyyy/mm/dd',strtodate(valor)));
        end else begin
        valor:=quotedstr(Rxdbgrid1.SelectedField.AsString); //string
        end;
     if (Rxdbgrid1.SelectedField.IsNull)  //campos nulos
     and(rxdbgrid1.SelectedField.DataType<>ftdate)then
        begin
        valor :='is null';  //fechas, string,...
        if operador<>'=' then sino:='NOT ';
        operador:='';
        end ;
     END ELSE BEGIN
     valor:=Rxdbgrid1.SelectedField.AsString ;
     for I := 1 to length(valor) do
       if valor[i]=DecimalSeparator then Valor[i]:='.';
     END ;
  if mActivarfiltro.Checked=false then  // 1º filtrado
     BEGIN
     with DMDatos.Dsetequipos do
       begin
       Close;
       SelectSQL.Clear;
       SelectSQL.Add('SELECT * FROM equipo');
       SelectSQL.add('WHERE '+sino+ format('%s %s %s',[Campo,Operador,Valor]));
       SelectSQL.Add('ORDER BY '+campo);
       Open;
       end;
     END ELSE BEGIN
     with DMDatos.Dsetequipos do  //2º filtrado y siguientes
       begin
       Close;
       //Averiguamos la posicion de la linea de Ordenamiento
       for I := SelectSQL.Count -1 downto 0 do
       if pos('ORDER BY',uppercase(SelectSQL[i])) <>0 then
       SelectSQL.Delete(i);
       SelectSQL.add ('AND '+sino+ format('%s %s %s',[Campo,Operador, Valor]));
       SelectSQL.Add('ORDER BY '+Campo);
       //ShowMessage(DMDatos.Dsetequipos.SelectSQL.text); //monitor
       open;
       end;
     END;
  mactivarfiltro.Checked:=true;
  DMDatos.Dsetequipos.Last;
  label1.Caption:=inttostr(DMDatos.Dsetequipos.RecordCount);//contador
  end;
__________________
Nadie nace enseñado, pide y se te dara.
Responder Con Cita
 


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
Ofertas de empleo Emilio Noticias 0 04-05-2006 10:10:12
Regulación de empleo santana Humor 1 30-11-2003 10:34:07
Busco empleo Delphi Man Varios 2 12-11-2003 16:36:42


La franja horaria es GMT +2. Ahora son las 21:28:48.


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