Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Consejo sobre flujo (https://www.clubdelphi.com/foros/showthread.php?t=35080)

Supermagayin 30-08-2006 21:18:30

Consejo sobre flujo
 
Hola a todos, de antemano muchas gracias.

Quiero pedirles un consejo. Resulta que estoy haciendo un programa que captura
cotizaciones, y quiero saber cual seria la forma correcta de mostrar los datos
y de capturarlos. Tengo una tabla de "producto" que tiene precios y descripcion
y tengo otra de "clientes".

Lo que a mi se me ocurrio:
poner un dbgrid que muestre los productos y su precio, puse un boton para que al precionarlo, el producto seleccionado pase a un stringrid del lado derecho y alli ir acumulando la lista de la cotizacion. Mi pregunta es...cual seria la forma correcta de grabar esta informacion en una tabla. O mejor si alguien se le ocurre una forma mas sencilla de resolver mi necesidad.


Utilizo delphi 6 y access.

:)

roman 30-08-2006 21:57:21

Necesitas una tabla para las cotizaciones:

cotizacion = (id, cliente_id, fecha, ... )

y una tabla para las líneas (productos) que incluye una cotización:

linea_cotizacion = (id, cotizacion_id, cantidad, ... )

Tendrás dos datasets, uno para cada tabla, además de las de productos y clientes, y estableces una relación maestro-detalle entre ambas:

cotizacion.id -> linea_cotizacion.cotizacion_id

Además tendrás dos dbGrid enlazados a estas tablas.

Cuando inicies la cotización añades un registro a la tabla de cotizaciones y lo llenas de entrada con el id del cliente seleccionado (en el dbgrid de clientes) y otros campos que hagan falta.

Haces el post y tomas el id asignado (suponiendo que lo genera el servidor o que es un campo autoincremental).

Al añadir un producto, (p. ej. con un doble click), agregas un registro a la tabla de líneas de cotización, y al registro en blanco le asignas el id de la cotización que ya obtuviste y el id del producto seleccionado en el dbgrid de productos.

De esta forma, tus líneas se guardan automáticamente con las relaciones necesarias sin necesidad de usar un StringGrid.

Algo así. :)

// Saludos

Caral 30-08-2006 22:07:47

Hola
Yo esto lo haria con pageControl, en la primera pagina pondria la tabla clientes y la Productos, con un boton localizo al cliente, y en el grid tengo los productos (por ejemplo), al darle dobleclick al grid me pasa estos datos a otra tabla nueba (previo mensaje....Quiere pasar si/no):
Numero cotizacion.
cliente
producto, precio Ect,
en esta segunda pagina con un Query y un dbgrid visualizo los datos que estoy introduciondo, con filtro de cliente y numero cotizacion.
y si voy a ser mas preciso, con edit en la primera pagina busco el numero de cotizacion que quiero y me la presenta en la segunda pagina.
asi puedes hacer pracicamente lo que quieras. (3 Tablas) no dos.
Con una numeracion de cotizacion puedes borrar esta si no la necesitas sin afectar otras cotizaciones.
Espero te ayude.
Saludos

Supermagayin 30-08-2006 22:08:48

Gracias por la Idea, me han ayudado mucho.

roman 30-08-2006 22:28:27

De hecho te servirá revisar el demo MastApp que viene con Delphi. Es un ejemplo muy completo que incluye como agregar pedidos y líneas de un pedido. En ese caso, desde el grid de líneas abres un formulario con la lista de productos. Hay muchas formas de organizar visualmente los controles y una opción es la que comenta Caral. Pero lo importante de ese demo es que puedes aprender con más detalle el funcionamiento de las relaciones maestro-detalle.

// Saludos


La franja horaria es GMT +2. Ahora son las 00:48:22.

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