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)
-   -   Los TDataSource en maestro detalle (https://www.clubdelphi.com/foros/showthread.php?t=90317)

ronalg 17-05-2016 00:52:52

Los TDataSource en maestro detalle
 
Buenas y santas amigos de club delphi, regresando a la programación desde hace unos meses despues de varios años alejado y dedicado a a la administración y a la educación, estoy algo empolvado en el tema pero algunas cosas no se olvidan (a Dios gracias).

Estoy haciendo el clasico sistema de compras, ventas y almacenes y me surgen algunas dudas sobre la eficiencia de mi lógica, por favor les pido darme unas orientaciones y espero no ser muy "cargaso" con mis consultas.

ahora tengo una consulta: Tengo cuatro tablas:

TB_COMPRAS_VENTAS (GUARDA LAS VENTAS Y LAS COMPRAS)

TB_DETALLES_CV (GUARDA EL DETALLE DE LOS ITEMS EN RELACION CON TB_COMPRAS_VENTAS);

TB_SERIES_ITEMS (GUARDA LAS SERIES DE LOS ITEMS, SI LOS TIENEN, EN RELACION CON CADA LINEA INSERTADA EN TB_DETALLES_CV DEFINIDO POR LA CANTIDAD DE ITEMS VENDIDOS EN LA LINEA DE DETALLE, POR EJEMPLO VENDO 4 PROCESADORES Y CADA UNO TIENE SU NUMERO DE SERIE)

TB_CUOTAS (EN RELACION CON TB_COMPRAS_VENTAS ALMACENA LAS CUOTAS DE PAGO DE LA VENTA CUANDO ES A CREDITO)

Obviamente estan conectados maestro detalle con Tdatasource y para evitar problemas de integridad referencial en mi servidor (perdón uso Firebird 2.5) uso las actualizaciones en cache una vez que envio toda la venta aplicando las actualizaciones en cache los triggers se encargan de hacerel resto (actualizar inventarios, etc) [esta utlima parte de los trigger es mi segunda duda].

1ra Duda: Uso los mismos datasource para hacer la relacion maestro detalle y para conectar los componentes de datos en el formulario de ventas me gustaria saber si esto es correcto o por lo menos factible o me traera algún problema en un futuro; sería mejor usar un datasource para la relacion maestro detalle entre mis TIBDatasets y usar otro datasource para conectar los componentes de datos.

2da Duda: Es recomendable usar actualziaciones en cache juntamente con triggers o son incompatibles, hasta donde entiendo debrian ser compaibles.

3ra Duda: Uso campos LOOKUP en varias de mis tablas. Por ejemplo la TB_DETALLES_CV tiene un campo REF_ITEM que lo relaciona con la TB_ITEMS donde se lista los items, su nombre y su existencia en almacenes pero en TB_DETALLES_CV solo se inserta el CODIGO del ITEM en el campo REF_ITEM uso un campo LOOKUP para mostrar el nombre del item. Pero también podria usar en la propiedad SELECTSQL del IBDataSet relacionado con la tabla TB_DETALLES_CV una consulta usando JOIN para evitar usar campos LOOKUP (Tambien deberia modificar la propiedad REFRESHSQL) ¿QUE ES MEJOR? USARS CAMPOS LOOKUP O USAR CONSULTA CON JOINs

DE ANTEMANO, MIL GRACIAS POR SU AYUDA.

Casimiro Notevi 17-05-2016 01:40:43

Cita:

Empezado por ronalg (Mensaje 505265)
1ra Duda: Yo usaría diferentes, además son gratis :)
2da Duda: No entiendo lo de las actualizaciones en cache.
3ra Duda: Yo usaría una consulta. Además, si son pocos registros, los mantendría en memoria para ahorrar hacer select cada a cada rato.

......................

ronalg 20-05-2016 21:18:43

Gracias mil
 
Sobre al duda Nro 2 lei en varios lugares que los cacheupdates en los ibdataset (delphi 6 - 7 y al parecer delphi XE5 hasta XE8 aun tienen esos componentes); producen errores "inexplicables" cuando se combinan con trigger.
En lo personala mi no me ha pasado, pero ante la duda pregunto...... será que a alguien le ha pasado? y que cuidados tener para que no pase estos errores.

Casimiro Notevi 20-05-2016 22:57:43

Cita:

Empezado por ronalg (Mensaje 505387)
Sobre al duda Nro 2 lei en varios lugares que los cacheupdates en los ibdataset (delphi 6 - 7 y al parecer delphi XE5 hasta XE8 aun tienen esos componentes); producen errores "inexplicables" cuando se combinan con trigger.
En lo personala mi no me ha pasado, pero ante la duda pregunto...... será que a alguien le ha pasado? y que cuidados tener para que no pase estos errores.

Yo no he conocido ningún caso de problemas con eso.


La franja horaria es GMT +2. Ahora son las 18:06:32.

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