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 |
Fecha de Compra y Detalle de compra no tienen claves primarias, intentalo de nuevo al ponerles una
|
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 |
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 |
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 |
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