FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Registro desaparecen en Firebird con Trigers
Buenas:
Ante todo gracias por la colaboración, desde hace un año diseñe un programa para la venta, tenia una tabla en donde guardo la ultima factura por caja y la iba actualizando por caja cada vez que realizaba una factura. Desde hace unos dos meses el cliente me solicito que necesitaba trabajar dos equipos con la facturación de una caja, para ello cree un valor consecutivo utilizando un generador y un triger cada vez que inserta un archivo. Pero desde hace unos dias me crean el registro imprimen la factura y en ese instante en el otro equipo estan creando otra factura y alguna de ellas no me la guarde y realmente no se que cambios realizar o que estoy realizando mal. Elimine las transacciones pensando que fueran ella y tampoco. Un equipo tiene la base y el otro se conecta a ella por red local. Lenguaje de programación Delphi 5, firebird 2.0 y componentes dataaccess. La estructura de datos es la siguiente: crea el generador:
este es el triger
y esta es la tabla que trabajo
gracias por su colaboración Rogerio Beltrán. |
#2
|
|||
|
|||
hola..
la base de datos parece bien.. yo buscaría en el código de la aplicación, más que nada con las transacciónes.. salu2 |
#3
|
|||
|
|||
Gracias por responder:
El problemas es eliminelas transacciones pensado que ese es el problema y no siguen desapareciendo los registros, el programa apenas ingresan a realizar una factura la guarda con datos genericos, modificando la secuendia que es la llave primaria. Realizan la venta e imprimen la tirilla y siguen trabajando normalmente pero cuando consultan la factura no aparece, reviso la base de datos y el registro que esta atado a la secuencia no aprece, es decir si iba en la factura 100 , crea la 101 y sigue trabajando y llegan hasta la 110, reviso la base y la 101 no existe datos.Lei en un correo que existia problemas con la versión de firebird 2.0.1 y decidi desinstalarla e instalarla 2.0.0, no se si se solucionara el problema, para el mes de septiembre tengo perdidas 26 facturas de 938 aunque algunas son facturas anuladas por que ingresan y no realizan la venta. Es la primera vez que me sucede esto y estoy muy preocupado. |
#4
|
|||
|
|||
Hola...
Tu problema podría ser que usas generadores para obtener el número de la factura... Los generadores son atransaccionales, esto es, no entran dentro del contexto de las transacciones, así que si pides un número y no guardas, ese número se pierde... Deberías probar con una tabla donde llevar el contador de facturas... Saludos... |
#5
|
||||
|
||||
El problema no debe ser la BD, en nuestra empresa usamos la versión 2.0.1 de FireBird y creeme que ya hubiera tenido un gran problema si me hubiera sucedido eso , como dice pvizcay, la estructura de la base de datos se ve bien, el problema debe estar en la aplicación, seguramente al momento de guardar las facturas esta eliminando alguna de las anteriores, dices que el problema no es en las transacciones, entonces revisa el algoritmo de grabado con un "paso a paso" para que analices lo que esta haciendo dicha aplicación, no vaya a ser que algun evento que se dispara este haciendo algun estrago .
Observación: Bueno, note en la estructura de tu BD que el campo factura de la tabla venta es de tipo float, ¿Necesitas que sea float?, pregunto porque me parece que trabaja mejor el double precision, pero si definitivamente necesitas el float me interesaria saber el "¿Porque?", gracias .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!" http://www.purodelphi.com/ http://www.nosolodelphi.com/ |
#6
|
|||
|
|||
Gracias por las respuestas estoy revisando el procedimiento para verificar su funcionamiento, lo del dato float en factura, se me paso cambiarlo a double precision. Gracias por sus comentarios.
|
#7
|
||||
|
||||
Yo utilizo este tipo de función para devolver el numero que debería tener la factura.
Lo pongo en el BeforePost del DataSet.
Se supone que antes de hacer el post (donde se graba el registro) - abre una transacción, - pide un numero del generador y lo mete en el ID del Dataset - cierra la transacción que abrió. La transacción es creada en el momento y no tiene nada que ver con la transacción que utilizas para el resto de la aplicación. Obviamente deberías modificar los triggers de BeforeInsert
|
#8
|
|||
|
|||
pues si es un sistema en red las transacciones son pasajeros de primera clase, no los puedes mandar a la baulera..!!! jaja
creo que el error viene porque hicistes un diseño que cuando lo escalastes a un sistema en red tiene alguna falla.. espero lo puedas solucionar! suerte! |
#9
|
|||
|
|||
Gracias a todos,
Realice una revisión del programa, estoy esperando su funcionamiento. Creo que era un error de programación. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Error al insertar un registro en Firebird | mateamargo | Conexión con bases de datos | 4 | 12-06-2005 14:52:36 |
!! Desaparecen registros !! | Sick boy | Conexión con bases de datos | 2 | 10-09-2004 16:31:38 |
Desaparecen los permisos | TJose | Linux | 1 | 13-07-2004 17:47:58 |
Problemas al eliminar un registro en Firebird | IcebergDelphi | Firebird e Interbase | 0 | 15-02-2004 20:55:34 |
Desaparecen los componentes ... | ingel | Varios | 4 | 11-06-2003 01:39:03 |
|