Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-01-2008
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
Evitar el KeyViolation de una Tabla

Buenas Amigos del foro ....
estoy terminando mi sistema de facturacion y tengo el siguiente problema que al facturar en dos cajas al mismo tiempo me da keyviolation la tabla de facturas , porque no tengo una manera de hacer que el programa al encontar una clave duplicada en este caso el numero de factura ,este le sume uno mas , es decir al facturar en dos cajas al mismo tiempo; debido a la restriccion de la tabla que no permita claves duplicadas que es algo muy bueno en este caso , no me de el keyviolation, tengo una tabla de cifra de control el cual lleva el ultimo numero de documento para partir desde alli y cada vez que se crea una factura este se actuliza con el ultimo numero de documento para partir de alli el siguiente numero de factura y haci sucesivamente , trabajo con una base de datos sql server 2000 , espero me ayuden ... :P
Responder Con Cita
  #2  
Antiguo 21-01-2008
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Nosotros lo que hacemos es, en el momento de insertar la nueva factura, bloquear la tabla de contadores, obtener uno e incrementar, luego insertar la factura y desbloquear. Eso debe estar dentro de una transacción.

Revisa los niveles de aislamiento porque tendrás que cambiar el ISOLATION LEVEL para que nadie lea la tabla de contadores mientras haces la operación anterior y obtenga valores incorrectos.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #3  
Antiguo 21-01-2008
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
mm entiendo Neftali , no habia pensado en eso ,,,y... mas omenos como los hago?...
Responder Con Cita
  #4  
Antiguo 21-01-2008
Avatar de jcarteagaf
[jcarteagaf] jcarteagaf is offline
Miembro Premium
 
Registrado: abr 2006
Ubicación: La Paz, Bolivia
Posts: 651
Poder: 19
jcarteagaf Va por buen camino
Evitar el Key violation

Para grabar transacciones de este tipo uso procedimientos almacenados en SQL Server, envio los datos de la factura a grabar y el procedimiento almacenado va a la tabla de contadores obtiene el siguiente, graba los datos y actualiza el archivo de contadores. Debido a la velocidad del sql server y la ejecucion en proc almacenados, hasta ahora no he tenido problemas de concurrencia.

Si quieres ejemplo del proc almacenado enviame un mensaje privado.

Saludos.
Responder Con Cita
  #5  
Antiguo 21-01-2008
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
estuve viendo el Isolation level aparentemente es que necesito pero no se por copleto como trabaja , loque deberia hacer el sistema es que mientras esta en uso la tabla de control, espere a que la otra transaccion termine... pero no ne como hacerlo...
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
Ordenar tabla numericamente (evitar 1,10,2,3) Forest Tablas planas 4 08-08-2007 02:05:55
Evitar Triggers Al Vaciar Tabla [Firebird] LuCkY_007 Firebird e Interbase 8 21-03-2007 20:22:20
Evitar los timers zugazua2001 Varios 5 17-06-2005 11:11:55
Evitar KeyViolation Ing Harry Conexión con bases de datos 10 11-06-2005 00:10:01
Evitar duplicados hectorin Conexión con bases de datos 2 29-10-2004 16:37:25


La franja horaria es GMT +2. Ahora son las 06:36:23.


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