FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
|||
|
|||
Añadir registros manualmente ClientDataset.Delta
Buenos días a todos:
a ver si alguien me puede "iluminar" con la siguiente situación Estoy desarrollando una aplicación para una gestión de presupuestos. He diseñado dos tablas (maestro-detalle), la tabla maestro con los datos generales del presupuesto, y la tabla detalle con los artículos que componen el presupuesto. Estas tablas están creadas y funcionan sin problemas. Aquí viene el "detalle". El usuario necesita mantener un histórico de los cambios de los registros de detalle, es decir si un registro se modifica, realmente no se va a modificar sino que se generará automáticamente un nuevo registro con los cambios en dicho registro, utilizando para ello un "número de versión" Versión Artículo Cantidad 1 Articulo 1 2 2 Articulo 1 3 En el ejemplo anterior se modifica la cantidad del artículo (2 -> 3), el registro internamente no se modifica sino que se crea un nuevo registro incrementando el número de versión y con la cantidad modificada. Esto es necesario ya que el usuario necesita poder saber los diferentes cambios que ha sufrido un mismo artículo Trabajo con Delphi Tokyo, DbExpress, Firebird Muchas gracias anticipadas |
#2
|
||||
|
||||
Puedes tener una tabla aparte con las revisiones anteriores.
id del documento línea del documento número de revisión artículo otros campos |
#3
|
||||
|
||||
Y esta tabla de histórico podría ser alimentada mediante un trigger
__________________
Buena caza y buen remar... http://mivaler.blogspot.com |
#4
|
||||
|
||||
Por supuesto, debe ser así.
|
#5
|
|||
|
|||
Buenos días y muchas gracias por vuestras respuestas. Esta solución que me proponéis ya me ha pasado por la cabeza y no la descarto. La que estoy estudiando ahora es la posibilidad, como comenté en mi primer mensaje, de que cuando se edite un registro, convertir esa edición en una inserción, correspondería a la nueva versión del registro modificado.
Vers. - nº lin. - artículo - cantidad 1 - 1 - ARTICULO 1 - 3 2 - 1 - ARTICULO 1 - 6 En este caso se modificaría el registro (linea 1) cambiando la cantidad de 3 a 6. Al aplicar las actualizaciones (ApplyUpdates) el primer registro no se actualizaría y se insertaría el nuevo registro, correspondiente a la versión 2. Para ello estoy estudiando el comportamiento del evento OnUpdateData del datasetprovider y el valor de la propiedad UpdateStatus. ¿Qué os parece la idea? Gracias de nuevo |
#6
|
||||
|
||||
Desconocemos los requisitos de lo que tienes que conseguir finalmente. Si te viene bien así, pues hazlo así.
|
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Lentitud al leer ClientDataSet.ChangeCount / Delta | rcarrillom | Providers | 14 | 11-06-2014 19:21:16 |
buscar registros de un ClientDataSet a otro clientDataSet | novato_erick | Conexión con bases de datos | 2 | 02-02-2013 20:48:09 |
añadir campos a un ClientDataSet en ejecución | sanpra | Varios | 2 | 24-10-2007 13:25:07 |
por que duplicidad de registros con clientdataset sin ingresar registros ...mysql | Arturo | MySQL | 3 | 05-09-2006 18:39:37 |
Bloqueo de registros manualmente | Will | Firebird e Interbase | 6 | 17-06-2005 17:38:38 |
|