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

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-06-2017
kia kia is offline
Miembro
 
Registrado: jul 2003
Posts: 78
Poder: 21
kia Va por buen camino
Error filtrar DBgrid d_x7 y Firedac

Hola. Estoy pasando una aplicacion en D6 a mi nuevo delphi XE7, uso base de datos Firebird y los nuevos componentes FireDAC.
Los datos el ddbgrid menus etc.. sin problema. Pero en el DBgrid empleo un filtro que me gustaria seguir utilizando por su comodidad, y me encuentro que no lo hace. La unica diferncia es que antes empleaba u Dataset y ahora un Query (Firedac).. diferncia en el lenguaje SQL quizas......?
Estoy cerrado...donde estoy fallando...Gracias. (este filtro no es mio me lo baje de una WEB y lo modifique).

Código Delphi [-]
  procedure  TV_Componentes.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:=dbgrid_c.SelectedField.FieldName;
  //extraer y dar formato al valor
  if dbgrid_c.SelectedField.DataType in TiposconComillas then
     BEGIN
     if dbgrid_c.SelectedField.DataType=ftdate then //fechas
        begin
        valor:=dbgrid_c.SelectedField.AsString;
        if valor='' then //fecha en blanco
           dbgrid_c.SelectedField.IsNull
           else   //fecha no blanco
           valor:=QuotedStr(FormatDateTime('mm/dd/yyyy',strtodate(valor)));
        end else begin
        valor:=quotedstr(dbgrid_c.SelectedField.AsString); //string
        end;
     if dbgrid_c.SelectedField.IsNull then//campos nulos
           begin
           valor :='is null';  //string,fechas...
           if operador<>'=' then sino:='NOT ';
           operador:='';
           end;
     END ELSE BEGIN
     valor:=dbgrid_c.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.FDQscom do
       begin
       Close;
       SQL.Clear;
       SQL.Add('SELECT * FROM WSCOM');
       SQL.add('WHERE '+sino+ format('%s %s %s',[Campo,Operador,Valor]));
       SQL.Add('ORDER BY '+campo);
       Open;
       end;
     END ELSE BEGIN
     with DMDatos.FDQscom do  //2º filtrado y siguientes
       begin
       Close;
       //Averiguamos la posicion de la linea de Ordenamiento
       for I := SQL.Count -1 downto 0 do
       if pos('ORDER BY',uppercase(SQL[i])) <>0 then
       SQL.Delete(i);
       SQL.add ('AND '+sino+ format('%s %s %s',[Campo,Operador, Valor]));
       SQL.Add('ORDER BY '+Campo);
       //ShowMessage(DMDatos.Dsetequimae.SelectSQL.text); //monitor dataset
       ShowMessage(DMDatos.FDQequimae.SQL.text); //monitor query
       open;
       end;
     END;
  mactivarfiltro.Checked:=true;
  DMDatos.FDQscom.Last;
  DMDatos.FDQscom.First;
  end;
__________________
Nadie nace enseñado, pide y se te dara.
Responder Con Cita
 



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
Firedac y SQL Server: Error por Case Sensitive mel4 Conexión con bases de datos 4 03-03-2017 18:08:12
Error de conexion con FireDAC y Firebird 3 GustavoCruz Firebird e Interbase 7 09-02-2017 17:49:17
Filtrar Base de Datos FireDac pokexperto1 Conexión con bases de datos 6 03-10-2015 00:26:07
Filtrar un DBGrid jdangosto OOP 4 22-02-2005 20:15:08
filtrar en un dbgrid click Varios 2 06-07-2004 19:28:23


La franja horaria es GMT +2. Ahora son las 09:28:30.


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