Tema: dbexpress
Ver Mensaje Individual
  #5  
Antiguo 16-06-2006
[pepon386] pepon386 is offline
Miembro Premium
 
Registrado: ene 2005
Ubicación: Valencia
Posts: 68
Reputación: 20
pepon386 Va por buen camino
Cita:
Empezado por cvinas
Problema:

Siguiendo con el tema, planteo el siguiente problema.

Existen 2 puestos que están facturando, el en momento t1 el puesto PC1 lee en una tabla PROXNUMEROFACTURA el próximo numero a facturar en este caso “1000”. Un rato después (t1 + 30 segundos) el usuario Pc2 lee el valor también “1000” de la tabla PROXNUMEROFACTURA. Luego el usuario PC1 aplica los cambios, grabando ‘1001’ en la tabla PROXNUMEROFACTURA y inserta los cambios en FACTURAS/DETALLEFACTURAS. Momento después el usuario PC2 quiere aplicar los cambios con el valor “1000” de donde surge una excepción porque el valor ya existe en FACTURAS.

Requisitos:
  • Necesito obtener un número de facturas con un valor secuencial y representativo para el usuario.
Posible solución:

Cuando el usuario PC2 aplica un número de factura que ya existe, se genera una excepción. En este momento se puede capturar la excepción y si por ejemplo es un error de unicidad se le puede sumar 1 a valor que ya existe, aplicando los cambios en las tablas PROXNUMEROFACTURA y FACTURAS.

Consulta:

¿Como hacerlo, siendo que estoy utilizando ClientDataSet Anidados para FACTURA/DETALLE FACTURAS?

Muchas gracias,

Claudio Viñas

Tienes dos opciones:
- Asignar dicho valor desde un trigger y recuperarlo en el evento AfterUpdateRecord del TDataSetProvider (recomendado).
- Asignar dicho valor capturando el evento BeforeUpdateRecord del TDataSetProvider.

De las dos, yo prefiero la primera, pues te aseguras de que es la base de datos la que gestiona la asignación de los números.
Responder Con Cita