Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-01-2010
Avatar de kaeltas
kaeltas kaeltas is offline
Miembro
 
Registrado: abr 2008
Posts: 22
Poder: 0
kaeltas Va por buen camino
Question Como borrar articulos con relacion a otra tabla

Primero que nada gracias por esta web y a toda la comunidad

Resulta que estoy teniendo problemas con una base de datos SQL que tiene unas tablas que estan relacionadas, (una de "Articulos" y otra de "Ordenes de compra") el problema es que quiero borrar un articulo de una de ellas pero que quede guardado en la tabla de ordenes de compra.

Intente borrarlo pero obtuve un error por la relacion que existe entre ellas, como puedo hacerle en estos casos???

Gracias por su atencion y perdonden las molestias!
Responder Con Cita
  #2  
Antiguo 12-01-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Creo que debes aprenderte el concepto de Integridad referencial.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 14-01-2010 a las 13:57:43.
Responder Con Cita
  #3  
Antiguo 12-01-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Claro que eso no significa que no puedas eliminar, por supuesto debes entender bien lo que estas haciendo, por que puede ocurrir que elimines o tengas perdidas de registros al ejecutar una elimnacion.
Por lo general en lo personal, yo aplico los siguientes criterios cuando voy a eliminar,insertar o Modificar tablas en la base de datos(especialmente si tengo tablas maestra-detalle)--> puedes ver el post # 12 de este hilo..
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 12-01-2010 a las 19:42:31.
Responder Con Cita
  #4  
Antiguo 12-01-2010
Avatar de kaeltas
kaeltas kaeltas is offline
Miembro
 
Registrado: abr 2008
Posts: 22
Poder: 0
kaeltas Va por buen camino
Cita:
Empezado por rgstuamigo Ver Mensaje
Claro que eso no significa que no puedas eliminar, por supuesto debes entender bien lo que estas haciendo, por que puede ocurrir que elimines o tengas perdidas de registros al ejecutar una elimnacion.
Por lo general en lo personal, yo aplico los siguientes criterios cuando voy a eliminar,insertar o Modificar tablas en la base de datos(especialmente si tengo tablas maestra-detalle)--> puedes ver el post # 12 de este hilo..
Saludos...
Te agradesco mucho tu respuesta, y ya lei lo que sugieres, el problema es que talvez necesito ser mas especifico.

Plz aqui te dejo una explicacion mas detallada haber si me pueden ayudar:

Tengo 2 tablas, la primera de Articulos y la segunda donde guardo "Ordenes de Compra" estas 2 tablas estan ligadas por "idArt".

Ahora va el asunto importante! yo quiero borrar algunos articulos que ya no se usan en la empresa, o simplemente algunos que estan duplicados en la tabla.

Pero a la hora de borrarlos me sale un error por que estan ligados con la tabla "ordenes de compra" (ya que alguna vez se compro ese articulo).

NOTA: Yo no quiero borrarlo de las ordenes de compra por que sirve para el registro de compras de la empresa, pero quiero borrarlo de la tabla de articulos por que ya no sirven.

Como le puedo hacer? Que se hace en esos casos?

Plz me ayudarian muchisimo con sus respuestas
, Gracias!!!
Responder Con Cita
  #5  
Antiguo 12-01-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Cita:
Empezado por kaeltas Ver Mensaje
...
NOTA: Yo no quiero borrarlo de las ordenes de compra por que sirve para el registro de compras de la empresa, pero quiero borrarlo de la tabla de articulos por que ya no sirven.

Como le puedo hacer? Que se hace en esos casos?

Plz me ayudarian muchisimo con sus respuestas
, Gracias!!!
Pues precisamente por eso te sugeri que entendieras el concepto de integridad referencial.
Lamentablemente no podras eliminar ningun articulo, si dicho articulo esta siendo referenciado(Foreign key)por otra tabla, de eso se trata la integridad referencial.
Por lo lo general se debe considerar precisamente esto, al momento de diseñar la base de dato; para lo cual existe muchas estrategias para solucionar este problema; una de ellas es añadir a tu tabla articulo un campo que indique el estado del articulo por ejemplo tu campo nuevo podria ser de tipo Char o Varchar(1), que solo reciba un caracter el cual te indique el estado del articulo, por ejemplo:
Tabla articulo
Cita:
Codigo| Nombre|Estado
01____Harina____A
02____Arroz_____A
03____Frejol_____D
04____Azucar____D
...

Donde
A significa Activo
D significa Desactivado (O podria ser E=Eliminado)
(Puedes colocar otras opciones)
De esa forma tranquilamente puedes activar o desactivar cualquier articulo..
Puede que el usuario crea que esta eliminando pero en realidad solo se esta cambiando su estado del articulo(es solo una eliminacion logica ), pero en realidad no se elimina de la base de dato.
Para saber los articulos activos tan solo podrias hacer esta simple consulta SQL
Código SQL [-]
select * from Articulos Where Estado='A';
De esta forma mas o menos trabajan las bases de datos de la entidades financieras como ser Bancos, Coopertivas,Mutuales,etc, ya que en un verdadero sistema no se deberia eliminar nada, todo queda como Historial.(Mucho menos si se va hacer Auditorias).
Espero haberte ayudado.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 14-01-2010 a las 13:58:57.
Responder Con Cita
  #6  
Antiguo 12-01-2010
Avatar de kaeltas
kaeltas kaeltas is offline
Miembro
 
Registrado: abr 2008
Posts: 22
Poder: 0
kaeltas Va por buen camino
Me ayudaste muchisimo y me ha quedado claro, lo que hare sera agregar el campo "Activo" y que las opciones sean "si/no" entonces en mi programa hare una consulta donde me muestre solo aquellos que estan activos.

Lamentablemente yo no diseñe la base de datos del sistema ya que fue generado por otras personas, pero entonces me doy cuenta que fue un error de diseño crearla de esta manera. (imagina que tengo 4 articulos repetidos pero al hacer referencia a otra tabla no pueda eliminarlos).

Lo tendre en cuenta para futuros proyectos.

Mientras tanto te agradesco muchisimo tu atencion y tu pronta respuesta, Me ayudaste muchisimo GRACIAS!
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
Relacion familias y articulos Espartaco SQL 7 20-06-2008 09:31:54
tabla articulos josi Varios 28 02-04-2008 10:30:55
como borrar datos de una tabla majuub Varios 6 23-05-2007 19:07:30
¿Una tabla sólo puede estar unida externamente como máximo a otra tabla ? febito Oracle 0 22-06-2004 18:12:16
Como insertar datos de una tabla en otra tabla? Salomon Firebird e Interbase 1 28-08-2003 11:29:40


La franja horaria es GMT +2. Ahora son las 02:47:04.


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