| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
kyo Invitado
|
Publicado: Mar 15 Feb, 2005 10:45 pm Asunto: formas de resolver una relacion maestro/detalle |
|
|
Hola,
¿Que forma pensais que es mas adecuada para representar y resolver los problemas asociados a una relacion maestro/detalle ?
Ejemplos:
- problemas de integridad referencial
- quien se borra primero
- Si se esta insertando el maestro y se comienzan a introducir detalles (tipica factura) sin haber hecho post en el maestro antes.
Hay algun documento que muestra una buena forma de resolverlo con componentes de la VCL ? |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Mie 16 Feb, 2005 2:44 pm Asunto: |
|
|
tal vez no sea la forma mas elegante, pero en mi caso uso una tabla emporal para detalles _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
kyo Invitado
|
Publicado: Mie 16 Feb, 2005 4:51 pm Asunto: |
|
|
mmm probablemente no.
Yo estoy decantandome por usar TClientDataSet, es decir, tu solucion pero con tablas en RAM.
Me gustaria ver mas formas de resolverlo.
Venga animo !!! |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Mie 16 Feb, 2005 5:40 pm Asunto: |
|
|
Antes usasbala realacion maestro-detalle en TTable, pero significabe que las tablas son transferidas en su totalidad desde el servidor hasta el cliente, empezaba aquedar lento a partir de los 3000 registros en el maestro.
Asi que creo tablas (create table etc etc slq) para detalle y la uso y asigno numero de folio (o control) hasta el momento de guardar los datos o las manejo en memoria _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com
Ultima edición por Touchsoftwares el Jue 17 Feb, 2005 3:23 am, editado 1 vez |
|
| Volver arriba |
|
 |
XyVy Master


Registrado: 25 Ago 2002Mensajes: 557Ubicación: Murcia (España)
|
Publicado: Mie 16 Feb, 2005 9:10 pm Asunto: |
|
|
Si estais usando BDE y conexión por Internet, no sugiero utilizar TTables, pues se traen todos los registros, nada más hacer un Open(), lo mejor sería utilizar SQL y solo traerse lo importante con querys muy depuradas que minimizen los datos a traer desde el servidor hasta el cliente.
Ciao. _________________ OJO!! Ya tenemos subforo de Bases de Datos!!
Gracias a los admins. |
|
| Volver arriba |
|
 |
Touchsoftwares Master


Registrado: 16 Dic 2002Mensajes: 869Ubicación: MEXICO Playa del Carmen
|
Publicado: Jue 17 Feb, 2005 3:22 am Asunto: |
|
|
Efectivament eso es lo que hago, solo uso los TTables para la definicion de mis catalagos ABC (con menos de 300 elementos) _________________ Ing. Gabriel Góngora Navarrete
TouchSoftwares Inc
http://www.touchsoftwares.com |
|
| Volver arriba |
|
 |
laremi400 Master

Registrado: 12 May 2004Mensajes: 179
|
Publicado: Jue 17 Feb, 2005 2:33 pm Asunto: |
|
|
Hola!!
Yo os cuento mi forma de hacerlo. Igual os sirve de inspiración.
1º.- SIEMPRE utilizo querys y SQL. Nunca uso Tables ni elementos similares por que son muy lentos. Como os indican en la respuesta anterior les da por traerse toda la tabla.
2º.- Uso SQL Server. Es la BD que hay en la empresa; supongo que que cualquier otra cliente/servidor valdrá. Y posiblemente las habrá mejores.
3º.- Dejo que se editen todos los campos en la pantalla. Es decir, los campos del maestro son Tedit y el detalle un grid. El usuario los rellena y cuando acabo le da al botón de grabar. Al grabar lo hago mediante instrucciones SQL. Por ejemplo Update ... o Insert ... Hay otras maneras, pero para empezar esto puede servir. Y si se te hace pesado escribir cada vez una instrucción Insert, pues te haces una función que la escriba por tí.
4º.- Todos los maestros/detalle tienen un número de lo que sea que comparten. Si es una factura, es un nº correlativo del 1 al N. Asi en el maestro el nº correlativo es indice y en el detalle el índice es el mismo nº correlativo + la línea del grid. Para cargar los datos del maestro y del detalle Select * from cada tabla y se pasan los datos del maestro a los edit y del detalle al grid. Y se edita lo que sea.
A muy grandes rasgos, es mi manera de trabajar. Obviamente para cada operación que se haga sobre la base de datos tienes que hacerte el código que pase de los edit a la tabla y viceversa. Pero como son cosas muy repetitivas puedes hacer funciones que hagan el trabajo por tí. Por ejemplo una función CargarDetalle( ... ) a la que le pases como parámetro el nº de la factura y te rellene el grid correspondiente.
La explicación detallada de como hago todo esto sería muy larga y prolija, así que como guía, tal vez os sirva.
Algún día que tenga muuuucho tiempo igual pongo un ejemplo en los Tips. Pero ese día de momento parece utópico.
Suerte!. |
|
| Volver arriba |
|
 |
|