Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

formas de resolver una relacion maestro/detalle

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Bases de Datos
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: formas de resolver una relacion maestro/detalle Responder citando

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
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

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
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

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
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.