PDA

Ver la Versión Completa : Evento Provider.BeforeApplyUpdates


Jere_84
01-06-2012, 15:55:25
Buenas, estube leyendo la ayuda que tiene la version 2010 de delphi y en el evento del BeforeApplyUpdates del ClientDataSet trate el parametro OwnerData de tipo OlveVariant donde se puede codificar la información personalizada. Luego del lado servidor, el proveedor puede responder o modificar esa información antes de aplicar las actualizaciones.
¿Alguien de ustedes ha utilizado esto?


procedure TDSServerModuleABMClientes.DataSetProviderClientesBeforeApplyUpdates(
Sender: TObject; var OwnerData: OleVariant);
begin
//...
end;


Slds.

Al González
01-06-2012, 20:10:05
¿Como qué información piensas pasar?

Jere_84
01-06-2012, 20:44:03
¿Como qué información piensas pasar?

datos de tipo TField.. Sabes como o para que se utiliza generalmente este parámetro?
La idea mi es hace una función de control de los campos obligatorios.

Al González
01-06-2012, 23:13:55
Es un parámetro Variant, por lo que puede almacenar cualquier cosa. Pero evita pasar punteros u objetos si el conjunto de datos cliente y el objeto proveedor no comparten el mismo espacio de memoria (como cuando son ejecutables distintos).

Se utiliza raramente. Yo lo usé en cierta ocasión para identificar al conjunto de datos cliente ante el proveedor, pues tenía varios conectados al mismo TDataSetProvider.

Puede ser empleado para señalar algún parámetro o condición especial que le sirva al proveedor antes y después de enviar los cambios a la base de datos, como "esto pásalo sin validarlo, porque viene de un proceso automatizado", "anota estos cambios en la bitácora", "envía notificación por correo electrónico", "no elimines estos registros físicamente, márcalos como cancelados", "solicita autorización", "de regreso dime cuántos pedidos hay pendientes de atención", y un sinfín de usos.

Para validar la obligatoriedad de los campos, generalmente dejo que sea el servidor de base de datos quien lo haga (pongo en False la propiedad Required de los campos TField), manejando la excepción con el evento OnReconcileError y mostrando un mensaje claro para el usuario. Nunca se sabe cuándo activaremos o desactivaremos el atributo "Not Null" de un campo; en este sentido, la base de datos manda.

Jere_84
01-06-2012, 23:40:09
Es un parámetro Variant, por lo que puede almacenar cualquier cosa. Pero evita pasar punteros u objetos si el conjunto de datos cliente y el objeto proveedor no comparten el mismo espacio de memoria (como cuando son ejecutables distintos).

Se utiliza raramente. Yo lo usé en cierta ocasión para identificar al conjunto de datos cliente ante el proveedor, pues tenía varios conectados al mismo TDataSetProvider.

Puede ser empleado para señalar algún parámetro o condición especial que le sirva al proveedor antes y después de enviar los cambios a la base de datos, como "esto pásalo sin validarlo, porque viene de un proceso automatizado", "anota estos cambios en la bitácora", "envía notificación por correo electrónico", "no elimines estos registros físicamente, márcalos como cancelados", "solicita autorización", "de regreso dime cuántos pedidos hay pendientes de atención", y un sinfín de usos.

Para validar la obligatoriedad de los campos, generalmente dejo que sea el servidor de base de datos quien lo haga (pongo en False la propiedad Required de los campos TField), manejando la excepción con el evento OnReconcileError y mostrando un mensaje claro para el usuario. Nunca se sabe cuándo activaremos o desactivaremos el atributo "Not Null" de un campo; en este sentido, la base de datos manda.

Muchas gracias Al Gonzalez, voy a analizar de cambiar el plan. ya que veo que este parámetro se utiliza mas como una bandera que para pasar datos.

Slds.