![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
|
|
#1
|
||||
|
||||
|
Problema con un Contador.
D7 y Firebird 2.5 conectando con las IBX.
Tengo un problema con un contador. Si abro altas facturas en dos equipos a la vez, el segundo que intenta grabar la factura no ve el contador actualizado y arroja un error de "Primary Key", repetida. Al actualizar el contador hago "Post" Este es el código:
Los parámetros de la transación son: Cita:
__________________
Guía de Estilo de los Foros Cita:
|
|
#2
|
||||
|
||||
|
Hola.
¿El número de factura lo asignas al grabar el siguiente en la tabla de contadores o haces algún proceso intermedio? porque si lees el número a asignar sin bloquear el registro es posible que desde dos puntos a la vez lean el mismo número y por eso tengas ese problema. (Miedo me da darte consejos, si suelto alguna tontería me disculpas) ![]() Saludos |
|
#3
|
||||
|
||||
|
El número se asigna al grabar, por lo tanto la segunda debiera leer el nuevo número y sumarle uno pero no se por qué lee la anterior..........
Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
|
#4
|
||||
|
||||
|
¿Y el contador es un generador o un +1 de un campo de una tabla?
__________________
La otra guía de estilo | Búsquedas avanzadas | Etiquetas para código | Colabora mediante Paypal |
|
#5
|
||||
|
||||
|
El contador es un campo guardado en la tabla contadores, el problema es que apesar de haber hecho un "post" despues de sumarle uno los otros equipos de la red no lo ven.
La prueba consiste en hacer dos facturas a la vez y a la hora de grabar grabo una antes que otra, la segunda no lee el incremento sobre la tabla. He probado a que antes de leer cierre el IbDatset y lo vuelva a abrir, pero nada. Un Saludo.
__________________
Guía de Estilo de los Foros Cita:
|
|
#6
|
||||
|
||||
|
Cita:
Tendrías que incrementar el nivel de aislamiento de la transacción involucrada (con un Isolation Level de Serializable no se podrían duplicar los valores del contador), o bien usar generadores, que en mi opinión es la opción recomendable en Firebird. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). Última edición por guillotmarc fecha: 27-06-2011 a las 17:38:53. |
|
#7
|
||||
|
||||
|
Hola.
¿ Porqué no usas un generador ?, es bastante mejor ya que son independientes de las transacciones, por lo que no te vas a encontrar con que dos transacciones simultaneas puedan leer el mismo valor en la tabla y por tanto intenten incrementar el contador a la misma cantidad. Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no). |
![]() |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Contador PHP | Deiv | HTML, Javascript y otros | 19 | 25-02-2008 15:15:38 |
| Mostrar un Contador | Deiv | HTML, Javascript y otros | 7 | 09-07-2007 04:04:34 |
| Contador De Impresiones | codigit | Windows | 0 | 27-11-2004 21:41:46 |
| Contador en impresion | Pablo Carlos | Impresión | 2 | 18-09-2004 19:07:16 |
| Problemas con un contador. | UTECYBER | OOP | 11 | 02-06-2004 05:49:24 |
|