Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-07-2013
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
Question ¿como obtener folios consecutivos mysql firebird postgresql?

hola.
pongo esto en varios por que estoy en el problema de generar folios consecutivos
en un ambiente multiusuarios.

Es decir. tengo la base de datos en el servidor.
a la que se conectan 10 usuarios 2 en cada sucursal 5 sucursales en total y a veces
si se tiene la serie y el folio

SUCURSAL1 1000

y se hace una venta.
con la computadora del usuario 1
y en la computadora del usuario 2
se hace igualmente una venta casi al mismo tiempo.

en lugar de que la secuancia sea
SUCURSAL1 1000
SUCURSAL1 1001
SUCURSAL1 1002

sale

SUCURSAL1 1000
SUCURSAL1 1001
SUCURSAL1 1001


Código SQL [-]
                  MyQueryDatEmp.SQL.Add('SELECT MAX(folio) AS FolioFact FROM Facturas WHERE Serie = ''' + serie + '''');

¿que tecnicas usan para que no se les repitan folios?

¿que tecnicas usan los bancos para tener folios seguros, imagino los de los pagos que se hacen y los cobrar a las cuentas.?

gracias.

Responder Con Cita
  #2  
Antiguo 23-07-2013
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Poder: 22
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Amigo le propongo que la obtención del numero de secuencia lo asigne en un trigger o disparador de la tabla...

Ejemplo Firebird:
Código SQL [-]
CREATE OR ALTER trigger FACTURAS_bi for FACTURAS
active before insert position 0
AS
BEGIN
          FOR SELECT MAX(Facturas.FOLIO) 
                 FROM Facturas 
                 WHERE Facturas.Serie = NEW.Serie
          INTO NEW.FOLIO;

END

Saludos...
Responder Con Cita
  #3  
Antiguo 23-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Lo indicado por cloayza es la mejor solución.
Aunque hay un fallo en la estructura de tu base de datos:
SUCURSAL1 1001
SUCURSAL1 1001
Ese dato debe ser clave única, no permitir duplicados.
De esa forma te saltaría una excepción y podrías controlarlo para asignarlo el siguiente número.
Responder Con Cita
  #4  
Antiguo 23-07-2013
JXJ JXJ is offline
Miembro
 
Registrado: abr 2005
Posts: 2.475
Poder: 22
JXJ Va por buen camino
hola cloayza

esa opcion la voy a probar.

Casimiro Notevi


yo meneje asi esas tablas por que cuando se ingresan las facturas.
cada una tiene su serie y folio.
y a veces sin serie. puro folio.

es decir.

SUCURSAL1 1001
SUCURSAL1 1001

SUCURSAL2 1001
SUCURSAL2 1001

1001
1001

no me parecio adecuado usar la clave unica para tener la secuancia de numeracion.

o tal vez entendi mal tu observacion.
Responder Con Cita
  #5  
Antiguo 23-07-2013
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.040
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Me ha parecido entender que el problema que tienes es que se repiten.
Por lo tanto, si eso es así, entonces hay que evitar que se repitan, el campo debe ser clave única, sin duplicados.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como obtener equivalente de Last en Firebird marcoszorrilla Firebird e Interbase 10 01-12-2012 20:35:10
Firebird vs PostgreSQL... jorosmtz Conexión con bases de datos 18 06-04-2010 05:06:09
¿PostGreSQL o MySQL? JoAnCa Debates 21 09-12-2009 09:40:58
PostgreSQL vs Firebird martinzcr Varios 3 06-09-2007 19:06:13
Como obtener la paleta de componentes de firebird barman Firebird e Interbase 7 12-06-2003 18:15:01


La franja horaria es GMT +2. Ahora son las 15:25:58.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi