Foros del Web » Programación para mayores de 30 ;) » Programación General »

Evitar registros duplicados

Estas en el tema de Evitar registros duplicados en el foro de Programación General en Foros del Web. Saludos. Escribo por la siguiente duda... Seré preciso. . Un sistema de facturación en red (6 maquinas facturando todo el día sin parar) . Dos ...
  #1 (permalink)  
Antiguo 25/01/2012, 10:39
Avatar de Ticosoft  
Fecha de Ingreso: agosto-2008
Mensajes: 29
Antigüedad: 15 años, 8 meses
Puntos: 1
Evitar registros duplicados

Saludos.

Escribo por la siguiente duda... Seré preciso.

. Un sistema de facturación en red (6 maquinas facturando todo el día sin parar)

. Dos Tablas..
. 1) Ventas
Campo NDOCUMENTO (VARCHAR(50)) como Campo Principal
. 2) DatosVentas
Campo NDOCUMENTO (VARCHAR(50)) como campo normal para relación en las búsquedas.

Que hago?

1. Antes de guardar el registro de la venta en la tabla Ventas, realizo un Query para saber el ultimo número ingresado y sumarle 1 al valor del campo obtenido. (x = x + 1)

2. Antes de guardar, ejecuto: Delete from Ventas where NDOCUMENTO = x (por si acaso, aunque en el fondo algo me dice que no debería)

2.1 Delete fromDatos Ventas where NDOCUMENTO = x

3. Después guardo en la tabla DatosVentas los artículos facturados donde NDOCUMENTO será el valor de x para futuras consultas.

¿Hago bien así? o hay un método mas pulcro.

He notado ciertos problemas, por ejemplo, en ocasiones, no todo el tiempo, no me aparecen registros en tabla DatosVentas, creo que es por usar Delete. Pero no se me ocurre otro método para evitar repetir un campo o que el sistema me arroje un mensaje de error diciendo que ese valor ya existe.

¿Hay otra forma de saber el proximo numero de factura para darselo a la variable x y registrarlo en ambas tablas?
  #2 (permalink)  
Antiguo 25/01/2012, 12:41
 
Fecha de Ingreso: enero-2008
Mensajes: 201
Antigüedad: 16 años, 3 meses
Puntos: 39
Respuesta: Evitar registros duplicados

Toda esa gestión tiene que hacerse desde la base de datos.

Según la que utilices se hace de una forma u otra.

Para que no se repita debes declarar el campo como clave primaria y si intentas duplicarlo te dará un error.
  #3 (permalink)  
Antiguo 25/01/2012, 13:55
Avatar de Ticosoft  
Fecha de Ingreso: agosto-2008
Mensajes: 29
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Evitar registros duplicados

Saludos.
Bueno la respuesta no ayuda mucho la verdad...
Uso Mysql como base de datos y el campo esta activado como campo principal..
Estoy empleando un manejador de errores a nivel de sistema y me lanza un mensaje de error por defecto ya preparado.
  #4 (permalink)  
Antiguo 25/01/2012, 15:49
 
Fecha de Ingreso: enero-2008
Mensajes: 201
Antigüedad: 16 años, 3 meses
Puntos: 39
Respuesta: Evitar registros duplicados

Ahora que se que usas mysql, te puedo dar una respuesta más exacta.

Declara ese campo como entero, y le indicas que sea clave primaria (o al menos que sea único con unique) y lo pones como "autoincrement". A la hora de insertar un registro indícale todos los campos menos ese.
  #5 (permalink)  
Antiguo 27/01/2012, 01:20
Avatar de zero0097  
Fecha de Ingreso: abril-2010
Ubicación: México
Mensajes: 481
Antigüedad: 14 años
Puntos: 69
Respuesta: Evitar registros duplicados

Asi como te dice ruben, de heco las dos formas son validas pero la primera que te dijo podrias capturar el error en un trigger de insert......
__________________
De nada, hay te encargo +1...
  #6 (permalink)  
Antiguo 27/01/2012, 12:31
Avatar de Ticosoft  
Fecha de Ingreso: agosto-2008
Mensajes: 29
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Evitar registros duplicados

Claro.. esa solución la había pensando, pero les comento lo siguiente..

En la Tabla1 soluciono eso con el campo tipo Entero y Autoincrementable... Chevere.. pero como haría entonces para darle el valor de ese campo Autoincrementable a un campo de la Tabla2, pues de ese campo es que extraigo los valores en un Query posteriomente..


Tabla1 Tabla2

Documento (autoin..) Documento ------> Y con este? como le doy el valor?
Fecha Articulo
Total Precio
N... N........
  #7 (permalink)  
Antiguo 27/01/2012, 12:53
 
Fecha de Ingreso: enero-2008
Mensajes: 201
Antigüedad: 16 años, 3 meses
Puntos: 39
Respuesta: Evitar registros duplicados

No se si entendí bien, pero ¿te refieres a insertar ese valor autogenerado de la tabla1 en la tabla2? Si es así primero tienes que insertar en la tabla1, y cuando vas a insertar en la tabla2 obtener el registro de la tabla1 y leer ese campo para insertarlo en la tabla2.

Si no te refieres a eso entonces entendí mal, trata de explicarlo mejor.
  #8 (permalink)  
Antiguo 27/01/2012, 12:55
Avatar de Ticosoft  
Fecha de Ingreso: agosto-2008
Mensajes: 29
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Evitar registros duplicados

Cita:
Iniciado por _Ruben_ Ver Mensaje
No se si entendí bien, pero ¿te refieres a insertar ese valor autogenerado de la tabla1 en la tabla2? Si es así primero tienes que insertar en la tabla1, y cuando vas a insertar en la tabla2 obtener el registro de la tabla1 y leer ese campo para insertarlo en la tabla2.

Si no te refieres a eso entonces entendí mal, trata de explicarlo mejor.
Es una idea muy sencilla con esencia a funcional que no la habia tomado en cuenta.. voy a probar ese metodo gracias por el superdato.

Etiquetas: duplicados, registros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:52.