Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
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
  #2  
Antiguo 11-06-2017
kia kia is offline
Miembro
 
Registrado: jul 2003
Posts: 78
Poder: 21
kia Va por buen camino
El mismo

Hola.
Después de mucho buscar....
después de mucho leer....
después de mucho probar...
No he logrado ordenar un dbgrid pulsando en el titulo de cada campo. Utilizando los Query de Firedac del Delphi XE7. (decepción total)
Alguien mas le ha pasado esto....?
Con las lib. Rx funcionaba a la primera.
Salu2.
__________________
Nadie nace enseñado, pide y se te dara.
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
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 16:41:34.


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