Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   mal funcionamiento maestro detalle con ADO (https://www.clubdelphi.com/foros/showthread.php?t=45389)

Ariel03 01-07-2007 15:34:04

mal funcionamiento maestro detalle con ADO
 
hola como estan.. les escribo porque tengo un problema no tan grave si se quiere pero me esta costando mucho saber cual es la solucion a ver si me pueden ayudar. tengo una aplicacion en delphi 7 con la base de datos hecha en access, que son estas:

Cliente:
CUIT------------ClavePrimaria
Nombre y Apellido
Domicilio

Fecha de Compra:
CUIT
Fecha

Detalle de Compra:
Fecha
Codigo
Descripcion
Cantidad
Precio
Total

El problema es este, en delphi la relacion maestro-detalle se establece perfectamente a traves de los componentes ADO que los tengo en un modulo de datos.. las relaciones serian:

CUIT (Cliente) --> CUIT (Fecha de Compra)
Fecha (Fecha de Compra)--> Fecha (Detalle de compra)

Pero cuando agrego un registro en la tabla Fecha de Compra que tiene la misma fecha de compra que la de otro cliente pero distinto CUIT... este registro me aparece repetido en el cliente que tenia la misma fecha tambien o sea no puedo repetir la fecha de compra.. por mas que el cliente sea distinto porque me pone como que el otro que compro en esa fecha tambien compro lo que el ultimo compro. No se si me han entendido.. pero ojala me puedan ayudar.
gracias.
Ariel

courtois 02-07-2007 06:12:45

Fecha de Compra y Detalle de compra no tienen claves primarias, intentalo de nuevo al ponerles una

Lepe 02-07-2007 09:25:04

Cliente:
CUIT------------ClavePrimaria
Nombre y Apellido
Domicilio


Detalle de Compra:
IdDetalle (autoincremento, clave primaria)
idCUIT (integer, y que hará referencia a la tabla Cliente)
Fecha
Codigo
Descripcion
Cantidad
Precio
Total

El campo Fecha vas a usarlo mucho, sobre todo en las búsquedas, sería conveniente añadir un índice secundario a dicho campo.

Saludos

Ariel03 03-07-2007 01:03:39

me ayudaron mucho sus aportes.. y les hice algunos cambios a las tablas, asi:

Cliente:
CUIT------------ClavePrimaria
Nombre y Apellido
Domicilio

Fecha de Compra:
Nº Factura (texto 10 caracteres)-----------ClavePrimaria
CUIT
Fecha

Detalle de Compra:
Nº Factura (texto 10 caracteres)
Fecha
Codigo-----------ClavePrimaria
Descripcion
Cantidad
Precio
Total

Entonces las relaciones maestro detalle quedarian:
CUIT ------> CUIT
Nº Factura -------> Nº Factura

Todo anda bien, pero cuando intento establecer la relacion en delphi con los componentes ADO con respecto al Nº Factura me sale un error que dice: Argumentos incorrectos, fuera del intervalo permitido o en conflicto con otros. La verdad no se que es porque en la relacion con el campo CUIT la hace bien.

Utilizo tres tablas ya que el cliente puede comprar mas de una cosa en una misma factura no se si me explico... y la relacion es sencilla nada mas que me sale ese error, ojala pueda resolverse. gracias

Lepe 03-07-2007 07:58:26

Supongo que código, será el código de producto que se ha comprado, al ponerlo de clave primaria, solo podrá comprarse ese producto una sola vez en toda la vida del programa.

Un consejo: el número de Factura tiene todas las papeletas para ser clave primaria de tu tabla "Fecha de compra", pero aviso que no es buena idea, ya que si el número de factura cambia de formato, afectará al diseño de la base de datos. Por este mismo motivo, creé el campo IdDetalle.

Como resulta que estas intentando hacer una factura, entonces sí necesitas 3 tablas:

Cliente:
CUIT------------ClavePrimaria
Nombre y Apellido
Domicilio

Factura
IdMaestro (autoincremento, clave primaria)
Nº Factura (texto 10 caracteres)
CUIT
Fecha

Detalle de Factura:
Fecha
IdMaestro (integer, clave ajena de Factura)
idDetalle (autoincremento, clave primaria)
Codigo
Descripcion
Cantidad
Precio
Total

Saludos

Ariel03 05-07-2007 02:06:55

gracias por sus concejos la verdad que funciono todo a la perfeccion. gracias de vuelta


La franja horaria es GMT +2. Ahora son las 13:49:48.

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