Ver Mensaje Individual
  #1  
Antiguo 04-06-2006
Avatar de Thales
Thales Thales is offline
Miembro
 
Registrado: ago 2005
Posts: 48
Reputación: 0
Thales Va por buen camino
Actualización manual en el evento BeforeUpdateRecord del DataSetProvider

Muy buenas a todos.

Estoy utilizando TClientDataSet + DataSetProvider + IBX y en una consulta concreta necesito controlar yo la actualización de los datos, para ello en el evento BeforeUpdateRecord del DataSetProvider utilizo código similar a este (es sólo un ejemplo):

Código Delphi [-]
procedureDataModule1.Provider1BeforeUpdateRecord(Sender: TObject; SourceDS: TDataset; 
  DeltaDS: TClientDataset; UpdateKind: TUpdateKind; var Applied: Boolean);
begin
  if UpdateKind=ukDelete then
  begin
    Query1.SQL.Text:=’update CUSTOMER set STATUS=”DEL” where ID=:ID’;
    Query1.Params[0].Value:=DeltaDS.FieldByName(‘ID’).OldValue;
    Query1.ExecSQL;
    Applied:=true;
  end;
end;

que, básicamente consiste en lanzar manualmente la consulta adecuada e indicar al DataSetProvider que de por realizada la actualización.

Todo funciona a las mil maravillas... bueno tan solo un problema: si la base de datos devuelve algún error como resultado de la consulta (alguna restricción de la base de datos no se cumple por ejemplo) este error no se transmite al ClientDataSet.
Dicho de otra manera, parece que al elegir la actualización manual perdemos el tratamiento automático de errores y estos ya no se propagan a la máquina cliente sino que se lanzan en el servidor de aplicaciones.
Necesito de algún mecanismo para que no se lance el error y que se traslade a la máquina cliente para que lo vea el usuario.

¿Alguna idea al respecto?
__________________
Mi web: http://personales.ya.com/cuaderno

Última edición por Thales fecha: 05-06-2006 a las 23:26:58.
Responder Con Cita