Ir al contenido


Foto

[RESUELTO] Como hacer la relacion de dos tablas


  • Por favor identifícate para responder
17 respuestas en este tema

#1 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 27 octubre 2010 - 10:33

Otra pregunta

Tengo dos tablas en la BD 'cliente' y 'equipo'  como hago para que cuando le de un clic a un cliente ya registrado, poder agregarle otros equipo, ya que se trata de un BD que registra clientes que traen equipos a reparar a un taller y pues logicamente, pensamos en que un mismo clientes puede traer un equipo hoy y otro mañana, y no es logico que el cliente se registre como 'nuevo' cada vez que traiga un equipo a reparar. Lo que quiero es seleccionar un cliente de la tabla 'clientes' y poder agregarle a dicho cliente el equipo que traiga a reparar y que se almacene en la tabla 'equipo'.

Como seria la relacion de las dos tablas ??????

La tabla clientes tiene los siguientes campos:

Cliente_No  (es un numero de cliente automatico)
Nombres
Apellidos
Direccion
Telefono

La tabla 'equipo' tiene los siguientes campos:

Codigo  (que es el codigo automatico para cada equipo que se registra)
Tipo
Marca
Modelo
Tamaño
Serie
Problema

( el taller solo repara televisores, y por lo tanto solo televisores se registrarán en la BD ) 
  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.446 mensajes
  • LocationMéxico

Escrito 27 octubre 2010 - 10:38

Hola lsedr

He separado esta pregunta porque es un tema totalmente diferente.

Si tienes preguntas diferentes, debes abrir un hilo por cada una de tus preguntas.

Salud OS
  • 0

#3 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 27 octubre 2010 - 10:39

Lo que debes crear es un campo en la tabla de equipos llamado idcliente, y lo que haces es que antes de grabar el registro le pasas el id del cliente activo
  • 0

#4 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 27 octubre 2010 - 10:40

Creando una liga (llave foránea) para la tabla de tus Equipos.... de tal manera que ésta sea un detalle de la tabla de Clientes

Es decir hacer una relación de un Cliente por Muchos Equipos (relación 1 a N)...

Agrega un campo a tu tabla de equipos que junto con código actue como llave quedando así:

Cliente_No (campo llave que se liga con tabla de Clientes)
Codigo  (que es el codigo automatico para cada equipo que se registra)
Tipo
Marca
Modelo
Tamaño
Serie
Problema

Saludox ! :)
  • 0

#5 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 27 octubre 2010 - 10:45

Haciendo lo que te comentamos los registros se verían de esta manera:

Tabla: Clientes

Cliente_ No    Nombres    Apellidos    Direccion  Teléfono
    1              Fulanito        X              X        1111111

Tabla: Equipos

Cliente_No  Codigo  Tipo    Marca  Modelo    Tamaño    Serie    Problema   
    1              1      X        Y          Z          A            V          X
    1              2      X        Y          Z          A            V          X
    1              3      X        Y          Z          A            V          X

Te recomiendo que agregues también en el campo de equipos la fecha en que entró un equipo a reparación... esto como mera sugerencia ;)

Saludox ! :)
 
  • 0

#6 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 27 octubre 2010 - 01:21

ufff ahora si, dale, gracias hermanos estare trabajando en eso.

gracias por la ayuda y las sugerencias.
  • 0

#7 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 27 octubre 2010 - 03:08

ufff ahora si, dale, gracias hermanos estare trabajando en eso.

gracias por la ayuda y las sugerencias.


Saludos.

Compañero para eso tenemos el botón de Gracias cuando nos encontramos útiles los mensajes expuesto ante una situación y también tenemos la etiqueta [RESUELTO] para los casos que estén listos.
  • 0

#8 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 27 octubre 2010 - 03:25

Hola,

Disculpen que venga a la fiesta y la amargue un poquito... ¿Y que sucede si un cliente viene a que le reparen nuevamente un equipo ya reparado anteriormente?  ;)

Que yo sepa un equipo puede romperse y repararse muchas veces. Yo diría que hay una tercer tabla, llamada reparaciones. En ésta se registra que equipo se ha reparado, en que fecha, etc. Entonces esta tabla tendrá una clave foránea hacia la clave primaria de la tabla Equipos. En síntesis se tendría algo como esto:



delphi
  1. +----------+      +---------+      +--------------+
  2. | Clientes |-|---<| Equipos |-|----<| Reparaciones |
  3. +----------+      +---------+      +--------------+



Es decir, una relación (1:M) desde Clientes a Equipos, y a su vez, una (1:M) desde Equipos a Reparaciones.

Espero que se entienda.

Saludos,
  • 0

#9 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 27 octubre 2010 - 04:01

Para efectos prácticos puedes asignarle un nuevo código de reparación no ???

Quiero pensar que Equipos se asemeja con Reparaciones.... al menos así lo comprendí yo.... por eso sugerí lo de la fecha....

Saludox ! :)
  • 0

#10 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 27 octubre 2010 - 05:12

Para efectos prácticos puedes asignarle un nuevo código de reparación no ???

Quiero pensar que Equipos se asemeja con Reparaciones.... al menos así lo comprendí yo.... por eso sugerí lo de la fecha....

Saludox ! :)

Puede ser amiguita. Puede ser.

Aunque yo lo veo a que si existe ese pseudo-código de reparación estás hablando de una supuesta entidad llamada reparaciones. Con lo que lleva al planteo que he hecho: hacer visible esa entidad y hacer las correspondientes relaciones. Con esto se elimina la dualidad y ambigüedad entre el concepto equipos y reparaciones.
Esto permite además, poder lanzar otras consultas y generar informes más precisos y detallados. Por ejemplo se podría ver el histórico de las reparaciones agrupadas por equipo y clientes.

Saludos,
  • 0

#11 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 27 octubre 2010 - 11:25

Entonces esa relacion que hago entre la tabla Cliente y Equipo, realmente que es lo que causa ?. Las dos tablas tienen un campo cada una con el mismo nombre (Cliente_No), en el caso de la tabla ''Cliente'',es el numero del cliente registrado, pero en el caso de la tabla ''Equipo'' entiendo que indica de cual cliente es el equipo que ingreso según el numero. Eso lo entiendo.

Lo que no entiendo es dos cosas:
1. Por que el valor del campo ''Cliente_No'' de la tabla ''Equipo'' no recibe automaticamente el mismo valor del campo ''Cliente_No'' de la tabla ''Cliente' ???
O es un trabajo que tengo que hacerlo yo indicandole al momento de registrar al cliente ?

2. Que hago para que la BD reconozca el siguiente cliente registrado como el No. 1, pues mientras voy probando, ya va como por el numero 15. que hago para volver el valor de ese campo automatico a 1 ?? Pues ya borre todos los registros de las dos tablas, y quiero que a partir de la proxima prueba me aparezca el cliente no. 1 y el equipo no. 1 ??
  • 0

#12 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 28 octubre 2010 - 07:18

1.- Sip, debes hacerlo tu manualmente

2.- Depende, con que BD trabajas, y de donde sale ese valor.
  • 0

#13 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 28 octubre 2010 - 09:15

Es una BD SQL server 2005 express
y el valor es automatico asignado por el mismo SQL

No se puede volver a que se registren los clientes a partir de 1, ya que voy ahora como por el cliente 20 registrado, y quiero volver a registrarlo como primero (1) ???
  • 0

#14 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 28 octubre 2010 - 09:32

Navegando Encontre esto:

SQL server 2005
DBCC CHECKIDENT (NOMBRE_TABLA, RESEED, 0)
Donde NOMBRE_TABLA es la tabla que contiene el campo autoincremental que deseamos reiniciar y el parametro 0 el nuevo valor para la semilla.


Tomado de

http://jetsmi.blogsp...e-un-campo.html
  • 0

#15 Wilson

Wilson

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.137 mensajes

Escrito 28 octubre 2010 - 09:32

Ensaya el siguiente script :



sql
  1. DBCC CHECKIDENT (TABLA, RESEED, 0)



TABLA es la tabla que contiene el campo autoincremental que deseamos reiniciar y el parametro 0 el nuevo valor para la semilla. Con esto el próximo valor será 1.

Saludos
  • 0

#16 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 28 octubre 2010 - 08:59

Ensaya el siguiente script :



sql
  1. DBCC CHECKIDENT (TABLA, RESEED, 0)



TABLA es la tabla que contiene el campo autoincremental que deseamos reiniciar y el parametro 0 el nuevo valor para la semilla. Con esto el próximo valor será 1.

Saludos


Quisiera ejecutarlo desde Delphi 7 con un simple boton
  • 0

#17 Rolphy Reyes

Rolphy Reyes

    Advanced Member

  • Moderadores
  • PipPipPip
  • 2.092 mensajes
  • LocationRepública Dominicana

Escrito 01 noviembre 2010 - 08:49

Saludos.

Prueba a poner esa sentencia en un componente TQuery.
  • 0

#18 lsedr

lsedr

    Advanced Member

  • Miembros
  • PipPipPip
  • 272 mensajes

Escrito 01 noviembre 2010 - 10:06

Saludos.

Prueba a poner esa sentencia en un componente TQuery.



Explica con detalles por favor, como se usa el TQuery para ejecutar esa sentencia
  • 0




IP.Board spam blocked by CleanTalk.