Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Providers
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-06-2006
Avatar de Thales
Thales Thales is offline
Miembro
 
Registrado: ago 2005
Posts: 48
Poder: 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
  #2  
Antiguo 05-06-2006
Avatar de Thales
Thales Thales is offline
Miembro
 
Registrado: ago 2005
Posts: 48
Poder: 0
Thales Va por buen camino
He seguido haciendo pruebas y al parecer los errores que se producen a nivel del DatasetProvider, sí que se trasladan al ClientDataSet.
Lo que me había confundido es que los errores no se manifiestan en el evento OnReconcileError del ClientDataset como ocurre cuando la actualización es automática, sino que saltan al finalizar la ejecución de ApplyUpdates, o eso me ha parecido al menos, ya que las pruebas las estoy haciendo con las dos capas conectadas por el componente LocalConnection

Un saludo
__________________
Mi web: http://personales.ya.com/cuaderno
Responder Con Cita
  #3  
Antiguo 05-10-2006
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola a todos!

¿Cómo le haces cuándo se trata de una modificación de registro y no todos los campos fueron modificados? Me gustaría conocer algún ejemplo; en este momento estoy buscando qué sería lo más recomendable al utilizar TDataSetProvider con dbExpress.

Cualquier ayuda al respecto será bien recibida.

Un abrazo dudoso.

Al González.
Responder Con Cita
Respuesta



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
Como actualizo con DataSetProvider? felixgo Conexión con bases de datos 1 11-01-2011 18:16:22
DataSetProvider david duarte Providers 3 19-01-2006 15:10:57
IBQuery --> DataSetProvider --> ClientDataset pinoxito Conexión con bases de datos 8 16-11-2005 20:40:34
Dbf/Ntx en RemoteDataModule/DataSetProvider StartKill Tablas planas 2 09-03-2005 21:45:33
Cambio a DataSetProvider Bretema Firebird e Interbase 0 12-10-2004 13:20:32


La franja horaria es GMT +2. Ahora son las 21:10:25.


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