Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 14-02-2016
Avatar de Luis M.
[Luis M.] Luis M. is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Ripollet - Barcelona
Posts: 212
Poder: 20
Luis M. Va por buen camino
FireDac+OldValue

Hola.
Estoy intentando obtener el valor de la propiedad OldValue de un campo pero parece que no funciona en Firedac.
Me devuelve el mismo valor que ingreso en un dbEdit.
La base de datos es Firebird 2.5.
Este es el código que pongo en el evento AfterPost del DataSet:

Código Delphi [-]
  if (FactuF_APUNTE.OldValue <> FactuF_APUNTE.AsDateTime) and
     (FactuAPUNTE.OldValue <> FactuAPUNTE.AsString) then
  begin
    QDm.Close;
    QDm.SQL.Text := 'Update conta set documento = null,f_documento = null '+
                    'where (f_apunte = :dF_Apunte) and (apunte = :cApunte)';
    QDm.ParamByName('dF_Apunte').Value := FactuF_APUNTE.OldValue;
    QDm.ParamByName('cApunte').Value := FactuAPUNTE.OldValue;

    QDm.ExecSQL;
    QDm.Close;
  end;

Si pongo este mismo código en el evento OnUpdateRecord (según la ayuda de Delphi),
si obtengo el valor, pero no me guarda las modificaciones que hago en el DataSet.
Alguna sugerencia?
Gracias y un saludo.
Responder Con Cita
  #2  
Antiguo 14-02-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
El evento AfterPost se dispara luego de grabar

El indicado sería el BeforePost

After --> después
Before --> antes
Responder Con Cita
  #3  
Antiguo 14-02-2016
Avatar de Luis M.
[Luis M.] Luis M. is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Ripollet - Barcelona
Posts: 212
Poder: 20
Luis M. Va por buen camino
Hola.
Gracias por responder.
En el BeforePost pongo todas las validaciones que quiero para los campos.
ejemplo:
Código Delphi [-]
  if FactuNUMERO.IsNull then
  begin
    MensajeError('Introduzca el número de la factura.',tdiError);
    FactuNUMERO.FocusControl;
    Abort;
  end;

Lo pongo en este evento por que es ahí cuando me interesa que se dispare.
Una vez que ya los datos han sido confirmados y grabados a la DB.
Códigos parecidos al del post anterior me funcionan perfectamente con delphi 2007 y los
componentes MDO.
Pero con delphi 10 Seattle y FireDac me encuentro con esta situación.
Según la ayuda http://docwiki.embarcadero.com/Libra...OnUpdateRecord , en el evento OnUpdateRecor se obtienen dicho valor y así es, pero si coloco el código en este evento
parece que todo va bien, hasta que cierro la ventana de facturas.
Cuando la vuelvo a abrir me encuentro que las modificaciones que había hecho a los datos no se mantienen.
Responder Con Cita
  #4  
Antiguo 15-02-2016
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Ya veo, yo nunca trabaje en profundidad con los eventos de los DataSet; mas bien prefiero moverme usando comandos sql y querys; pero eso es tema aparte


Solo se me ocurren tres cosas:

1. Algun problema de transacciones, sobre todo debido a "parece que todo va bien, hasta que..vuelvo a abrir y no se aplicaron los cambios"

2. Segun la documentacion, en el evento OnUpdateRecord hay que asignar un valor al parametro AAction; si todo va bien, deberia setearse al valor eaApplied

3. La propiedad OldValue de TField solo funciona si se usan Cached Updates, tal como lo dice la documentacion

En este enalce se explica todo sobre Cached Updates con FireDAC

Última edición por AgustinOrtu fecha: 15-02-2016 a las 02:13:16.
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
Uso de Firedac jafera Conexión con bases de datos 2 12-11-2014 12:46:25
Firedac Aldo Conexión con bases de datos 2 16-12-2013 22:26:07
Problemas con Format y OldValue gluglu Varios 1 11-07-2008 23:37:13
Valores OldValue RicardoNavarro Firebird e Interbase 1 26-04-2007 17:57:54
sobre oldvalue y newvalue en tablas ebeltete SQL 0 22-09-2004 14:03:08


La franja horaria es GMT +2. Ahora son las 04:30:02.


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