Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-07-2007
Ariel03 Ariel03 is offline
Miembro
 
Registrado: oct 2006
Posts: 19
Poder: 0
Ariel03 Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 02-07-2007
Avatar de courtois
courtois courtois is offline
Miembro
 
Registrado: abr 2006
Ubicación: Mexico DF
Posts: 200
Poder: 19
courtois Va por buen camino
Fecha de Compra y Detalle de compra no tienen claves primarias, intentalo de nuevo al ponerles una
Responder Con Cita
  #3  
Antiguo 02-07-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 03-07-2007
Ariel03 Ariel03 is offline
Miembro
 
Registrado: oct 2006
Posts: 19
Poder: 0
Ariel03 Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 03-07-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #6  
Antiguo 05-07-2007
Ariel03 Ariel03 is offline
Miembro
 
Registrado: oct 2006
Posts: 19
Poder: 0
Ariel03 Va por buen camino
gracias por sus concejos la verdad que funciono todo a la perfeccion. gracias de vuelta
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
Problema tabla Maestro-detalle en la q la pk de t.detalle formad por 2cods de la maes akinom38 Varios 1 09-11-2007 19:27:44
Respecto a la relacion maestro detalle detalle ilichhernandez Conexión con bases de datos 0 15-05-2007 18:13:54
Numerar el detalle Maestro / detalle en secuencia josejose SQL 5 10-02-2007 00:27:38
Reporte Maestro/Detalle/Detalle de 4 Tablas jovehe Impresión 2 23-03-2005 01:25:02
Maestro-Detalle ;Actualizar detalle a partir de un DBgrid norberto_larios Conexión con bases de datos 1 11-09-2004 18:17:34


La franja horaria es GMT +2. Ahora son las 12:41:01.


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