Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-03-2010
luifervm luifervm is offline
Miembro
 
Registrado: nov 2009
Posts: 12
Poder: 0
luifervm Va por buen camino
Ayuda con ClientDataset.RefreshRecord

Hola !!

Tengo un Problema que se lo que es, pero no se por qué esta pasando:

Estoy usando delphi 6.0 y BDE ... (clientdataset).

Tengo dos tablas en maestro detalle.

En el Encabezado tengo un campo que es calculado en la base de datos que se llama "DIFERENCIA" basicamente es la resta de dos valores que estan en dos columnas diferentes.

En el detalle voy insertanto filas que tienen valor en una u otra columna y hay un trigger en la bd que actualiza el encabezado.

Pongo un ejemplo:

El encabezado tiene todos los valores en 0
Inserto una fila en el detalle que pone un valor 100 a la derecha
Entonces el encabezado quedaria con 0 -100 = -100 en el valor calculado.

Hasta ahi todo funciona perfecto.

Despues de hacer eso necesito actualizar un campo en el encabezado.

Todo funciona bien.

Inserto otra fila y todo funciona bien.

Cuando inserto mas filas, todo deberia funcionar bien, pero tengo un problema cuando tengo que actualizar el campito en el encabezado y se va a "ejecutar" el update (en este caso se hace el post del encabezado). Me saca un error que el campo "DIFERENCIA" no se puede actualizar porque es un campo calculado...

Investigando... cada vez que yo inserto en el detalle hago el applyupdates y luego hago un refreshrecord del encabezado para que "retome" los valores de la base de datos y en el campo DIFERENCIA me ponga el ultimo valor de acuerdo a la ultima insertada en el detalle.

El problema radica en que despues de insertar la segunda fila en el detalle al hacer el refreshrecord... el condenado ya no me trae el ultimo valor despues del insert en el detalle sino que sigue mostrandome el valor ANTES de insertar la tercera fila, entonces claro cuando va a actualizar el campo que necesito en el encabezado, esta tratando de poner un valor "Viejo" en DIFERENCIA, es por eso el error. Lo que no entiendo es porque diablos el refreshrecord me esta funcionando, pero a partir de un tercer insert NO me esta trayendo el ultimo valor....

Resumo los pasos que se estan ejecutando:

Se crea el encabezado, OK.
Se inserta un registro en el detalle, OK
Se ejecuta el applyupdates del detalle y el refreshrecord del encabezado, OK (al insertar el detalle todo lo demas se calcula en la bd mediante triggers y funciona bien).
Se actualiza el campo en el encabezado, se ejecuta el applyupdates y el refresh, OK.

Para el segundo registro funciona igual, perfectamente.

Para el tercer registro, despues del applyupdates en el detalle y el refreshrecord en el encabezado... Se inserta en efecto el detalle, se calcula todo en la bd (si hago un query de la bd veo que TODO ESTA BIEN), pero el "nuevo" valor de la diferencia no lo "actualiza" en la forma, sigo viendo el que tenia despues de insertar la segunda fila... cuando se intenta hacer una modificacion en el encabezado, por tener ese valor "viejo", bota un error en el applyupdates del encabezado...

Alguna Idea??? Gracias !!
Responder Con Cita
  #2  
Antiguo 16-03-2010
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
Creo que esperas que el método RefreshRecord consulte nuevamente a la base de datos. Esa no es su función. En este hilo se explica cómo refrescar un registro consultando a la base de datos.

Saludos.

Al González.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
RefreshRecord - DBExpress con Interbase StartKill Varios 2 08-12-2008 00:03:23
Ayuda con ClientDataset Fita Providers 2 23-04-2008 16:22:28
ayuda ClientDataSet, DataSetProvider y ApplyUpdates cmm07 Varios 1 23-03-2008 09:27:28
Ayuda: ClientDataset Fita Conexión con bases de datos 2 11-10-2005 20:18:44
Ayuda con ClientDataSet!!!! Selene Providers 4 28-08-2003 20:21:27


La franja horaria es GMT +2. Ahora son las 16:53:57.


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