Ver Mensaje Individual
  #3  
Antiguo 16-11-2004
Avatar de radiohead
radiohead radiohead is offline
Miembro
 
Registrado: may 2004
Ubicación: Oliva (Valencia)
Posts: 34
Reputación: 0
radiohead Va por buen camino
Question Posible Solución? (a medias)

Hola!
La verdad es que no se otra forma mejor de ir generando una secuencia (efectivamente, se trata de un programa de facturación), y más si este programa se da el caso de que trabajen varias copias al unísono en red... desde luego, no es nada aconsejable ir efectuando retrasos en el contador, si se da este caso desde uno de los clientes.

No obstante (por si puede servir de algo), investigando he encontrado una forma interesante de generar la secuencia, y al mismo tiempo saber el ID generado.

Se trata de, en vez de confiar esta operación a un trigger, incrementar el generador desde el programa cliente insertando un SQLQuery con la siguiente sentencia SQL:

Código:
SELECT GEN_ID(Generator, Incremento) FROM RDB$DATABASE
Esto incrementa el GENERATOR (hablo de un Servidor Interbase), que es el mismo para todos los clientes (no se me ocurre ningún conflicto, aunque se haga desde el cliente), y te devuelve el resultado, que lo puedes incluir inmediatamente en el FIELD correspondiente antes de hacer efectiva la inserción tanto en el campo clave de la tabla maestro como en el campo externo de los registros de la tabla detalle.

No te soluciona el problema de que si hay errores en la inclusión seguirá siendo efectivo el incremento, pero menos es nada... Sólo se me ocurre que antes del mismo, asegurarse mediante código, si es necesario, de que la inserción se va a realizar sin ningún problema.

Si alguien conoce alguna forma mejor, le agradecería su consejo.

Un Saludo


Última edición por radiohead fecha: 16-11-2004 a las 09:40:45.
Responder Con Cita