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)
-   -   cual es la mejor tecnica para crear una factura (https://www.clubdelphi.com/foros/showthread.php?t=67897)

DELFIN2000 12-05-2010 20:40:48

cual es la mejor tecnica para crear una factura
 
Hola a todos, desde hace dias he estado checando poder encontrar informacion de alguna forma correcta de crear una factura con sus respectivos detalles, tengo una vaga idea perno se que no es correcta, por lo que agradecere si alguien tiene alguna inforacion o ejemplo. estaba pensando que cada vez que yo busque un producto me aparezca en una grid, pero esto implica ir gravando cada vez la linea del detalle, el problema seria cuando se corrompa la compu por alguna razon, me quedarian guardados los detalle en la tabla cuando deberia quedar guardado en forma general tanto la cabecera como los detalles en sus respectivas tablas, bueno necesito una mejor tecnica. gracias de antemano

Cañones 12-05-2010 23:11:47

Hola.
No entendí bien que es lo que necesitas. El modelo en DB o una idea de como es el formulario?
Saludos.

Neftali [Germán.Estévez] 13-05-2010 14:15:12

Normalmente hay dos formas de enfocar este problema.

1) Cada operación que realizas en las líneas de detalle o en la cabecera (normalmente se modifica al modificar las líneas de detalle) se guarda en base de Datos.

2) Trabajar en memoria (tabla en memoria o Tclientdataset, por ejemplo) y sólo guardar la factura en Base de Datos cuando se acaba toda la factura.

El primero tiene el inconveniente de que haces muchas operaciones en Base de Datos respecto al segundo, pero si por lo que sea a medio trabajo se apaga la máquina, tendrás guaradados todos los datos hasta ese momento (media factura), mientras que con el segundo sistema no.

Puede haber un intermedio, que es trabajar en memoria, e ir guardando una copia de los datos en local (para evitar pérdidas); Una vez acabado se guarda en Base de datos y se elimina la copia en local. Te evita pérdidas de datos, pero añade complejidad al asunto.

ContraVeneno 13-05-2010 16:26:02

yo voto por usar un TClienteDataset, muy sencillo y con muchas opciones de solución.

DELFIN2000 14-05-2010 06:27:40

Ejemplo de como aplicar ClientDataset
 
Gracias a los compañeros por su orientacion sobre la tecnica de como crear una factura con sus detalles. Alguien tiene por ahi alguna referecia o mejor un ejemplo de como aplicar un ClientDataset en una factura. pk estoy atorado.

de antemano gracias

Chaja 23-10-2010 15:50:02

Master detail
 
Master:
no se si ya solucionastes el problema, pero te cuento que hago yo.
Yo tengo tres tablas que conforman la factura, una la cabecera, detalles y los impuestos.
estas dos ultimas tienen el id de la cabecera.
Uso ClienttDataSet, ya que son practicos para trabajar y me da las funcionalidades similiares a cuando lo hacia con tablas paradox.
en fin cuando inicio una factura doy de alta los valores de cabecera, y cuando ingreso en los detalles, voy dando de alta cada lina con ref, a la cabecera. los impuesto se generan solo en las opreaciones de calculo que se ejecutan despues de cada post del detalle. Cuando esta en el detalle, yo bloqueo la cabecera, pero eso es depende de como lo hagas, lo hago asi pues en la cabecera, tengo datos que repito en las linea de detalles, como el deposito, la fecha, el codigo de cliente y demas cosas.
Los 3 CDS no los tengo enlazados en relacion master detail. cuando despues de hacer la factura o consulta uno , levanto de las tres tablas haciendo ref,. al id de cabecera.
para gravar genero un incio de tr hago loas applyuptade(0) y comit.
cualquier cosa avisame

Luis Roldan
Mar del Plata
Argentina

AzidRain 23-10-2010 20:09:16

Lo mejor es usar ya sea TClientDatasets o algun otro tipo de tablas en memoria. Primero haces todo tus movimientos tanto en la cabecera como en los detalles y ya cuando vas a grabar inicias una transacción, grabas la cabecera, grabas el detalle y grabas los impuestos y haces un commit. Si ocurre algún problema la transacción se cierra y no se guarda nada de manera que no te quedan registro "volando". Ahora bien, hay casos en los que la cabecera puede tener como clave, id o folio un campo autoincrementado o bien que no sabes su valor hasta que se guarda en la bd, en ese caso haces lo mismo solo que despues de grabar la cabecera, obtienes el valor que le asignó el motor de BD y con ese valor modificas todos los registros de las tablas de detalle y de impuestos y entonces si procedes a grabarlas.


La franja horaria es GMT +2. Ahora son las 12:04:36.

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