Club Delphi  
    Paypal   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

 
 
Herramientas Buscar en Tema Desplegado
  #4  
Antiguo 27-11-2006
Avatar de AzidRain
[AzidRain] AzidRain is offline
Miembro Premium
 
Registrado: sep 2005
Ubicación: Córdoba, Veracruz, México
Posts: 2.914
Poder: 23
AzidRain Va camino a la fama
El problema es que esta mal modelado desde el principio y creo que no tuviste en cuenta la concurrencia que pudiera darse. A veces efectivamente es por milesimas de segundo pero sucede. Supongamos que un puesto esta dando de alta un cliente (A) y al mismo tiempo otro puesto hace lo mismo(B). Digamos que tienes el ultimo numero en 100. Entonces A checa y calcula el proximo en 101, al mismo tiempo B hace exactamente lo mismo y obtiene obviamente el mismo valor (suponemos que como A no ha guardado aun su informacion el valor 100 no se ha movido). Entonces A finalmente guarda sus datos sin problemas e inmediatamente despues de eso B intenta guardar. Como esta usando la misma clave, y suponemos que esta correctamente definida la clave principal para evitar duplicados, el manejador de BD no permite guardar (duplicate Key error) y el registro que se intentaba guardar se pierde (el de B). Obviamente todo esto paso en fracciones de segundo.

Por que es un mal modelo? Porque aun suponiendo la situacion anterior, el sistema deberia poder recuperarse del error en la clave y ya sea mandarle el mensaje al usuario sin perder el registro o bien incrementar la clave una vez mas hasta conseguir poder guardarlo. En "La cara oculta" de Marteens trae un capítulo que habla de este problema y el manejo de transacciones, seguro te servirá.

Una solucion mucho mas sencilla, es usar en tu table de clientes un campo autoincrementado (Paradox lo soporta) y asi te olvidas ya que es Paradox quien se encarga de asignar las claves y obviamente nunca se presenta el problema que vimos ya que la clave sea asigna justo al momento de guardar el registro por lo que es imposible que se pierda.

Por último:
Cita:
La verdad es que me da mucha perza remodelar todo por eso solo.
Recuerda el conocido refrán: "El flojo y el mezquino andan dos veces el camino"..
__________________
AKA "El animalito" ||Cordobés a mucha honra||
Responder Con Cita
 



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
por que duplicidad de registros con clientdataset sin ingresar registros ...mysql Arturo MySQL 3 05-09-2006 18:39:37
Registros duplicados Shidalis SQL 2 06-12-2005 22:46:44
20,000 registros ABDIGAR SQL 8 27-06-2005 19:19:58
registros que no se ven en ado joanajj Conexión con bases de datos 5 08-04-2005 22:02:54
Actualizacion de Registros Nelson Alberto Conexión con bases de datos 0 07-10-2004 19:11:15


La franja horaria es GMT +2. Ahora son las 18:53:26.


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