Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Gracias a roman (https://www.clubdelphi.com/foros/showthread.php?t=12862)

karocs 28-07-2004 22:30:39

llamar al evento OnFilterRecord
 
Hola

:confused: Que parametros se necesitan para llamar al evento OnFilterRecord, es que en el parametro DataSet no se que colocar,

roman 28-07-2004 22:33:00

Al igual que con cualquier evento, no eres tú quien debe llamarlo. El evento se generará cada vez que el DataSet esté por mostrar un registro y en el código del evento decides si mostrarlo o no.

// Saudos

__marcsc 28-07-2004 22:37:44

Por otra parte, el parámetro DataSet no es sinó el conjunto de datos que estás filtrando en este momento. Es decir, si tu tienes un Query de facturas que filtras mediante este evento, cuando se dispare automáticamente el parámetro DataSet será tu Query de facturas.

Saludos!

roman 28-07-2004 23:56:17

karocs:

La costumbre en los foros es tratar los temas en los mismos foros con el fin de que todos puedan beneficiarse así que traslado aquí tu mensaje privado.


Cita:

Empezado por karocs en mensaje privado
Hola roman gracias por contestar... si no puedo controlar el evento OnFilterRecord , puedo de alguna forma en el mismo evento filtar por mas de un parametro o buscar un registro en especifico, te lo agradeceria inmensamente y con extrema urgencia

Me da la impresión de que lo que necesitas sí es el evento OnFilterRecord sólo que te falta entender un poco su funcionamiento.

El evento está diseñado precisamente para manejar filtrados más complejos que una simple comparación con un valor.

Cuando el DataSet requiere mostrar un registro en un control "data aware" (por ejemplo porque te estás desplazando en un DBGrid) mira primero si está asignado el evento OnFilterRecord. De ser así, él- el DataSet - es quien hace la llamada al evento pasando la variable Accept como parámetro. En ese momento entonces es cuando se ejecuta el código que tu hayas escrito. Al finalizar la llamada el DataSet examina el valor del parámetro Accept. Si Accept es true entonces muestra el registro y en caso contrario se lo salta.

En el código del evento debes entonces determinar- por los medios que sea -si se muestra o no el registro y asignar a Accept el valor true o false según sea el caso.

Por poner un ejemplo, suponte que tienes una tabla de clientes con dos campos, "deuda" y "fecha_deuda" y quieres mostrar únicamente los registros con "fecha_deuda" de más de 30 días y deuda mayor que 500. En el evento OnFilterRecord pondrías:

Código Delphi [-]
Accept :=
  (DaysBetween(DataSet['fecha_deuda'], Now) > 30) and
  (DataSet['deuda'] > 500);

De esta forma estás filtrando por más de un parámetro.

Ahora bien, en tu pregunta mencionas

"puedo de alguna forma en el mismo evento filtar por mas de un parametro o buscar un registro en especifico"

Nota que filtrar y buscar son dos cosas distintas. Si lo que deseas es buscar un registro entonces puedes usar métodos como Locate.

// Saludos

karocs 29-07-2004 17:21:54

Gracias a roman
 
roman muchiiiiiiisimas gracias, me acabas de salvar la vida ;) ;) ;) ,


La franja horaria es GMT +2. Ahora son las 16:17:13.

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