Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-12-2009
mentor mentor is offline
Miembro
 
Registrado: dic 2009
Posts: 10
Poder: 0
mentor Va por buen camino
Exclamation Problemas con duplicacion de datos

Hola utilizo fibplus con firebird 2.1.3 en d2007, tengo un sistema de punto de ventas en red con mas de 6 maquinas, algunas veces tengo problema cuando un usuario esta facturando, y el otro tambien al mismo tiempo, es que el detalle de una venta aparece en la otra, no se cuando pasa, por que en el evento before post preguno si ya existe ese registro si existe vuelvo a crear, hay alguna manera de bloquear un registro maestro detalle cuando esta en edicion o algo por el estilo. espere expresarme bien, desde ya les agradesco
Responder Con Cita
  #2  
Antiguo 21-12-2009
Avatar de look
look look is offline
Miembro
 
Registrado: sep 2007
Ubicación: The Shire
Posts: 656
Poder: 17
look Va camino a la fama
Cita:
Empezado por mentor Ver Mensaje
Hola utilizo fibplus con firebird 2.1.3 en d2007, tengo un sistema de punto de ventas en red con mas de 6 maquinas, algunas veces tengo problema cuando un usuario esta facturando, y el otro tambien al mismo tiempo, es que el detalle de una venta aparece en la otra, no se cuando pasa, por que en el evento before post preguno si ya existe ese registro si existe vuelvo a crear, hay alguna manera de bloquear un registro maestro detalle cuando esta en edicion o algo por el estilo. espere expresarme bien, desde ya les agradesco
creo que deberias utlilizar transacciones

Código Delphi [-]
      if not (Database1.InTransaction) then Database1.StartTransaction;
      try

/////proceso normal de grabar datos
///// aqui haces un procedimiento que te calcule el siguiente num.
              Database1.Commit;
      except
        ON E: EXCEPTION DO
        BEGIN
              database1.rollback;
              APPLICATION.MESSAGEBOX( PCHAR( 'Error de SQL'+E.MESSAGE ), 'Error ',MB_ICONSTOP );
              exit;
        END;
      end;
__________________
all your base are belong to us
Responder Con Cita
  #3  
Antiguo 21-12-2009
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Lo que ocurre es que estás repitiendo el número del apunte, porque cuando llegas al evento BeforePost de la cabecera ya tienes varias líneas que se han mezclado con las del otro equipo que está emitiendo el mismo número.

Yo por el momento para estos casos lo que hago es dar a cada usuario un número y este número lo multiplico por 10.

Ejemplo:útlima factura = 500
Empieza a realizar una factura el usuario número 6

500+6*10=560

Este es el número de factura provisional que permanece hasta que pulse el botón de alta, entonces si el último número es el 500, se le suma 1 y se da de alta la cabecera 501, acto seguido en el evento AfterPost por ejemplo se hace un "Update" de todas las líneas que pasarán de 560 a 501.

Esperemos otras ideas.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 22-12-2009
mentor mentor is offline
Miembro
 
Registrado: dic 2009
Posts: 10
Poder: 0
mentor Va por buen camino
estoy haciendo de la sgte manera cabeceraventa y detalleventa, al crear nueva factura genero el ultimonumer + 1, y en before post compruebo otravez el ultimo n + 1 y guarda la cabecera, luego voy insertando los detalles, en la cabecera tengo un campo id_estado que cuando imprimo cambia de valor, que hago que no se pueda mas editar ni eliminar la factura, y las factura cargo por usuario, osea mediante un procedimiento almacenado con parametros, y pruebo y pruebo parece que va a andar bien, pero resulta que hoy ya me paso otravez que volvio a cruzarse los detalles, ahh y el campo id_estado coloco en otro dataset como maestro detalle y lo actualizo cada vez que hay cambio en la tabla cabecera venta evenalert, sera que estoy haciendo algo mal o una idea por favor
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
Duplicación en MSDE. Delphiboy MS SQL Server 0 30-05-2006 01:57:08
Duplicacion, suscriptores y publicador. sp_MSgetrowmetadata Cabanyaler SQL 0 04-10-2004 19:02:32
duplicación de indice en un t table perico Conexión con bases de datos 1 29-11-2003 15:51:05
como crear exception para validar duplicación de llaves en tabla viajero2015 Conexión con bases de datos 6 21-10-2003 09:54:09
Duplicación Cabanyaler MS SQL Server 1 20-10-2003 11:32:10


La franja horaria es GMT +2. Ahora son las 15:26:43.


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