PDA

Ver la Versión Completa : Filter en fkCalculated


MaMu
20-03-2008, 15:20:47
Tengo una pregunta, se puede aplicar un filtro a un campo calculado?


MiQuery.Filtered:=False;
MiQuery.Filter:='mi_campo_calculado<>"de_un_texto"';
MiQuery.Filtered:=True;


Saludos

pcpower
20-03-2008, 15:27:09
Hola!
NO, no se puede, te dá un error no se cuanto. Si usas ClientDatasets la solución es pasar el campo calculado a uno de tipo InternalCalc, que se almacena en memoria, pero no en la base de datos. Otra manera, si no usas ClientDatasets, sería que el campo calculado sea calculado en la propia base de datos.
Saludos, Marcelo.

MaMu
20-03-2008, 15:46:50
Hola!
NO, no se puede, te dá un error no se cuanto. Si usas ClientDatasets la solución es pasar el campo calculado a uno de tipo InternalCalc, que se almacena en memoria, pero no en la base de datos.


No, no estoy usando ClientDataset. El resultado de la consulta, lo tomo directamente de la db mediante un Query.


Otra manera, si no usas ClientDatasets, sería que el campo calculado sea calculado en la propia base de datos.
Saludos, Marcelo.

El tema es que el campo calculado, me muestra el resultado de consanguineidad de personas (padre, madre, hermano/a, medio hermano/a P/M, etc.) lo que me complicaría hacer las subconsultas, ya que el filtro que quiero aplicar, es mostrar todos, o solo los consanguíneos o parientes.

Gracias pcpower, voy a intentar hacer subconsultas de subconsultas de subconsultas!!! :eek:

Saludos

pcpower
20-03-2008, 16:04:26
Hola!

Si no se te ocurre nada más, podés usar ClientDatasets igual conectando cualquier Query, como el que ya tenés, lo ideal son los unidireccionales del tipo dbexpress. Si no hay disponible un driver específico para tu base en dbexpress usás el OpenODBCExpress. De todos modos el ClientDataset se conecta con cualquier TQuery o DataSet a traves de un DataSetProvider. No es necesario que pases toda tu aplicación a DataSnap sino solo lo uses para esta tabla en particular.
En fin... DataSnap está muy bueno!, aunque también toma trabajo agarrarle la mano...

Saludos.

MaMu
20-03-2008, 19:55:12
Utilizando un ClientDataSet enlazado al Query de la consulta en cuestion. Ahora el delpligue de datos usando el DBGrid son tomados del ClientDataSet, aplicando el filtro sobre un Campo Calculado sin ningún tipo de problemas.


ClientDataSet.Filetered:=False;
ClientDataSet.Fileter:='mi_campo_calculado<>'''+var_text+'''';ClientDataSet.Filtered:=True;

Pero cuando lo ejecuto en otra PC, me tira el siguiente error: ERROR LOAD MIDAS.DLL Porque?




Saludos

MaMu
22-03-2008, 03:40:06
Sigo probando, pero el error Error Load MIDAS.DLL, aun persiste.

Por que?

MaMu
22-03-2008, 07:28:04
SOLUCIONADO

Copie el MIDAS.DLL a %windows%system32 de la PC cliente y asunto solucionado.

pcpower
23-03-2008, 23:48:39
Hola!

Me fui a San Pedro y los dejé ..:)
Te comento que te conviene siempre incluír Midas en la aplicación para evitar quilombos. Esto se hace Incluyendo la librería MIDASLIB en el proyecto, así no hay que mandar la dll por separado

program ;
uses
Forms,
midaslib,
USplash in 'USplash.pas' {SplashForm},
about in 'about.pas' {Aboutx},
xxx in 'xxx.pas' ... etc etc etc...

El único drawback que tendría esto es si querés actualizar la librería midas a la ultimísima versíon, ya que no lo podrías hacer y te confomarías con la que viene con tu versión de Delphi.

Anyway, si quieren la última versión de la dll y se conforman registrandola en cada equipo habitualmente se baja de:
http://www.distribucon.com/midas.aspx

Saludos, Marcelo.