Ir al contenido


Foto

Ayuda con tabla master detalle


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

#1 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 08 noviembre 2011 - 12:48

Hola amigo en esta ocación necesito una ayuda con este problemita que tengo:

yo quiero tener una tabla donde un registro tenga varios registro relacionado, me explico:

tengo tres tablas llamadas:
- Factura
- Cliente
- Articulos

tengo los campos en factura:
id Factura
No factura
id Cliente
id Articulos

en los campos de cliente:
id cliente
nombre
apellido

en los capos de articulos:
id articulos
nombre
cantidad
precio unit
precio total.

la relacion puse  1:M:  Id articulos de articulos con el Id articulos de Factura.
y id cliente del cliente con id cliente de factura

Ahora yo quiero que un factura tenga varios articulos en un solo registro de factura.

estuve mirando la posibilidad de crear master detalle, pero la verdad morí en el intento, por tal razon vengo a pedirle ayuda.

  • 0

#2 Cron

Cron

    Member

  • Visitante
  • PipPip
  • 41 mensajes
  • LocationCD DE MEXICO

Escrito 08 noviembre 2011 - 01:07

Hola amigo en esta ocación necesito una ayuda con este problemita que tengo:

yo quiero tener una tabla donde un registro tenga varios registro relacionado, me explico:

tengo tres tablas llamadas:
- Factura
- Cliente
- Articulos

tengo los campos en factura:
id Factura
No factura
id Cliente
id Articulos

en los campos de cliente:
id cliente
nombre
apellido

en los capos de articulos:
id articulos
nombre
cantidad
precio unit
precio total.

la relacion puse  1:M:  Id articulos de articulos con el Id articulos de Factura.
y id cliente del cliente con id cliente de factura

Ahora yo quiero que un factura tenga varios articulos en un solo registro de factura.

estuve mirando la posibilidad de crear master detalle, pero la verdad morí en el intento, por tal razon vengo a pedirle ayuda.



Si bien entiendo los clientes tienen facturas y las facturas articulos vendidos,  por lo que tienes que modificar un poco tus tablas


la tabla de clientes esta bien


en los campos de cliente:
id cliente
nombre
apellido


pero la tabla de facturas no, debe de quedar


campos en factura:
id Factura
No factura
id Cliente (llave foranea)


pues aqui no necesitas el id_articulo


La tabla de articulos vendidos, necesitas el id_factura, para saber a que venta pertenecen


en los capos de articulos:
id articulos
nombre
cantidad
precio unit
precio total.
id_factura  (llave foranea)  ;)


Tambien necesitaras una tabla para el catalogo de articulos


id_articulo
descripcion
precio_unit


A partir de aqui es relativamente facil hacer maestro detalle...


Saludos

#3 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 08 noviembre 2011 - 01:22

cuando hablas de catalogo para la tabla no entiendo aque te refiere, es una tabla a parte? o como funcionaria esa tabla si es una tabla
  • 0

#4 Cron

Cron

    Member

  • Visitante
  • PipPip
  • 41 mensajes
  • LocationCD DE MEXICO

Escrito 08 noviembre 2011 - 01:41

cuando hablas de catalogo para la tabla no entiendo aque te refiere, es una tabla a parte? o como funcionaria esa tabla si es una tabla





Es una tabla donde deberás tener tus artículos con un id_articulo único (así como la de clientes), este tipo de tablas se les llama comunmente catálogos...


Esta tabla es distinta a la que tienes como artículos, la cual según te entiendo debería ser nombrada como 'artículos_vendidos' o 'detalle_art', pues son el detalle de una factura.


:cool:


Saludos


PD no se de donde sacaste 'catálogos de tabla'.

#5 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 08 noviembre 2011 - 01:50

ok yo tengo una tabla asi donde pongo los productos, otra cosa como hago para que estos datos aparescan en la tabla de articulos, con consulta llevando los datos unos edits y luego guardandolo en la tabla articulos. eso es que creo que debo hacer. que piensa?
  • 0

#6 Cron

Cron

    Member

  • Visitante
  • PipPip
  • 41 mensajes
  • LocationCD DE MEXICO

Escrito 08 noviembre 2011 - 02:07

ok yo tengo una tabla asi donde pongo los productos, otra cosa como hago para que estos datos aparescan en la tabla de articulos, con consulta llevando los datos unos edits y luego guardandolo en la tabla articulos. eso es que creo que debo hacer. que piensa?



Efectivamente estas en lo correcto, primero consultas de tus productos, seleccionas el articulo (el cual te da id,nombre y precio), permites que la cantidad en un edit sea modificable e insertas un registro nuevo en tu tabla articulos...


Saludos

#7 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 08 noviembre 2011 - 02:29

entonces en el campo de la tabla articulos de la llave foranea ID_factura que  que tendra ese campo a la hora de insertar los datos la tablas articulos. tengo tendido que ahy guardara el numero id de fatura. pero mi pregunta es lo guardaria automaticamente o yo tengo que hacer algun truco o jugada ahy?
  • 0

#8 Cron

Cron

    Member

  • Visitante
  • PipPip
  • 41 mensajes
  • LocationCD DE MEXICO

Escrito 08 noviembre 2011 - 02:47

entonces en el campo de la tabla articulos de la llave foranea ID_factura que  que tendra ese campo a la hora de insertar los datos la tablas articulos. tengo tendido que ahy guardara el numero id de fatura. pero mi pregunta es lo guardaria automaticamente o yo tengo que hacer algun truco o jugada ahy?



Para el momento que estes insertando los artículos, debiste haber creado primero la factura, insertando un registro en la tabla de facturas y guardando en una variable el id_factura creada.


Así para que cada uno de los artículos insertados cuenten con el id_factura.


Una de las maneras de hacer facturas que utilizo lleva este proceso:


-Primero se selecciona el cliente al cual quieres hacer una factura (obtienes el id_cliente)
-Crea una factura con el id_cliente (la BD te debe de dar un secuencial de la tabla de facturas) y obtienes el id_factura
-Abres una ventana para llenar el detalle de la factura
-Vas llenando tu detalle de artículos vendidos y los insertas con el id_factura
-Finalmente muestras tu factura terminada lista para imprimir o mandar por correo, generar factura electrónica etc, etc


Este es un solo tipo de proceso pero existen multitud de ellos y dependen de la forma en que se realiza la venta, el comercio o empresa, inclusive la DB que estes usando, la forma en que obtienes los secuenciales, etc.




Saludos



#9 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 08 noviembre 2011 - 03:22

si te entiendo, pero yo se que es asi, pero yo digo como hago para que automaticamente despues de general id_factura se guarde en la tabla de articulos id_fatura. me gustaria ver un ejemplo.
  • 0

#10 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 08 noviembre 2011 - 08:40

una pregunta amigos el catalogo debe llevar una relaccion con los articulos?
  • 0

#11 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 08 noviembre 2011 - 08:57

una pregunta amigos el catalogo debe llevar una relaccion con los articulos?


Totalmente... te pongo un ejemplo con datos de lo que te menciona el amigo Cron:

Tabla Catalogo Articulos
Id_Articulo      Nombre_Articulo      Precio_Unitario
---------------------------------------------------------------
Art001            Shampoo                      12.75
Art002            Crema humectante      34.50
Art003            Pasta dental                  9.89
Art004            Jabón de manos            3.15



Tabla Detalle de Factura
Id_Factura      Id_Articulo    Cantidad        Precio_Unitario    Precio_Total
--------------------------------------------------------------------------------------------
Factura1          Art004              2                      3.15                      6.30
Factura1          Art001              10                  12.75                  127.50
Factura2          Art003              1                      9.89                      9.89



... y así sucesivamente, si te das cuenta amigo, el catálogo de artículos es el universo (hablando de conjuntos) de todos los artículos que pueden ser facturados, y el detalle de la factura, hace referencia a la tabla de catálogo pero únicamente de aquellos artículos que serán incluidos para cierta factura....

Espero te quede un poco más claro, si no, no dudes en continuar preguntando  (y)

:embarrassed:

Saludox ! :)
 
  • 0

#12 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 09 noviembre 2011 - 08:42

okay la tabla catalogo como paso los datos la tabla detalle, cual es la consulta que debo hacer para esto
  • 0

#13 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 09 noviembre 2011 - 08:55

Bueno amigo, como no sabes qué artículo va a seleccionar el usuario de entre todo el catálogo, por principio de cuentas debes traerte todo el catálogo de artículos.... un simple

select * from CatalogoArticulos order by id_articulo


Una vez que el usuario seleccione el artículo que anda buscando, tendrás que hacer otra consulta similar pero ahora trayéndote la información de ese artículo en particular...


select nombre_articulo, precio_unitario from CatalogoArticulos where id_articulo = 'XXXX'


Saludox ! :)
  • 0

#14 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 09 noviembre 2011 - 10:23

okay.  yo tengo el formulario de factura donde tengo un boton que me llama al formulario de catalogo donde es cojo el catalgo. pero en formulario de factura tengo un campos con varios edit para mostrar los datos del formulario de catalogo, para luego guardarlo dentro de la tabla artículos.

no se si sea asi como debe estar eso, perdón por la ignorancia.
  • 0

#15 Fenareth

Fenareth

    Advanced Member

  • Administrador
  • 3.486 mensajes
  • LocationMexico City

Escrito 09 noviembre 2011 - 10:35

Sip, vas bien... antes de guardar la información en la tabla de detalle de las partidas, debes poder visualizar los datos que ya recuperaste del catálogo en los edits que mencionas... (y)

Saludox ! :)

  • 0

#16 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 09 noviembre 2011 - 12:45

si ya tengo todo eso, pero tengo una duda, como guardare los datos de id_factura desde la tabla articulos, por que la tabla factura id_factura es autonumerico y al finar de guardar la tabla factura es que yo se el numero que corresponde  id factura desde la tabla factura.

sera que yo tengo que guardar los datos de facturas primero para asi tener el codigo y luego proceder con los calogos?



  • 0

#17 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.295 mensajes
  • LocationArgentina

Escrito 09 noviembre 2011 - 05:18

Hola,


Siempre, y porque así funciona la integridad referencial, para almacenar un registro en una tabla esclava o detalle se requiere que exista un registro con la correspondiente clave primaria en la tabla maestra.


No se puede guardar un detalle suelto, necesariamente ha de contar con un valor en la clave foránea que haga referencia a la clave primaria de la tabla a la que está referenciando.
Para el caso de una relación (M:M) naturalmente, para guardar en la tabla intermedia debe existir un registro en cada maestra.


Y en general, dada n tablas maestras para una tabla detalle, se requiere que exista n registros, uno por cada una de las tablas, para luego proceder con el detalle.


De allí en más, cualquier otro orden de cómo ha de guardarse la información es más una cuestión de diseño: organización, presentación y de lo que realmente se necesite en la aplicación.


Saludos,
  • 0

#18 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 14 noviembre 2011 - 08:37

okay  amigo yo logre hacer las tablas master detalle bien y me funciona, pero ahora yo quiero sumar el campo total de las tres tablas que tengo como detalle y lo hago con esta consulta desde mi adoquery y lo muestro en un edit llamado Precio Total:



delphi
  1. ADOQUERY3.SQL.Text:='SELECT sum( [PRECIO TOTAL] + [COSTO TOTAL] + TOTAL ) AS suma from productos,
  2.                               materiales, servicios WHERE Id_facturacion LIKE ''%'+Edit29.Text+'%''';
  3.  
  4. ADOQUERY3.Active:=TRUE;



Bueno me explico:
Yo tengo una tabla llamada facturacion, y otras tres que son las Detalle llamadas productos, materiales, servicios.

pero tengo un problema que los datos me aparecen solo cuando tengo los tres registro en cada tabla, si una de la tabla detalle no tiene registro no me muestra nada en el edit precio total.
  • 0

#19 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.448 mensajes
  • LocationMéxico

Escrito 15 noviembre 2011 - 09:57

Hola

¿ Estas seguro que tu query funciona ?



delphi
  1. ADOQUERY3.SQL.Text := ' SELECT sum( [PRECIO TOTAL] + [COSTO TOTAL] + TOTAL ) AS suma, ' +
  2.                       ' materiales, servicios FROM productos ' +
  3.                       ' WHERE Id_facturacion LIKE ''%'+Edit29.Text+'%''';



Por otro lado

  [PRECIO TOTAL] y  [COSTO TOTAL]    ¿ son campos de tu base de datos ?

Salud OS
  • 0

#20 amell2020

amell2020

    Advanced Member

  • Miembros
  • PipPipPip
  • 340 mensajes
  • LocationEn un solo Lugar

Escrito 15 noviembre 2011 - 11:39

Si ese query funciona pero solo me esta funcionando si tengo  los tres registro en cada tablas. me explico si en las 3 tablas que la tengo como detalle de facturacion me suma todos los campo totales.

  [PRECIO TOTAL] y  [COSTO TOTAL]    ¿ son campos de tu base de datos ?
son dos columnas de dos tablas diferentes
  • 0




IP.Board spam blocked by CleanTalk.