Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-08-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Consulta: Maestro/Detalle, CachedUpdates

Hola compañeros.

Antes de comenzar: Delphi7 y Firebird 2.1.

Tengo dos IBDataSets en relación maestro/detalle. Les adjunto los campos significativos para clarificar:

Código Delphi [-]
// CAMPOS DEL MAESTRO
  tbMaes: TIBDataSet;
  tbMaes_ID: TIntegerField;
  tbMaesCod: TIBStringField;      //  NOT NULL  
  tbMaesFec: TDateTimeField;      //  NOT NULL
//  ...
// CAMPOS DEL DETALLE
  tbDetal: TIBDataSet;            
  tbDetal_ID: TIntegerField;      // NOT NULL 
  tbDetalRDia: TIntegerField;     // NOT NULL REFERENCES (tbMaes) 
  //...

Tengo que ingresar y guardar los campos del archivo detalle antes de que todos los campos del maestro
hayan sido completados, así lo requiere el ingreso.
Bástaría con hacer un post y un edit antes de guardar el detalle para funcionar correctamente,
pero se dispara lógicamente una excepción por no estar ingresados los campos "not null" en el maestro.

La solución que encontré, fue Activar CachedUpdates en los IBDataSets Maestro y detalle, para poder
realizar el post y evitar la excepción, ya que todavía los datos no han sido enviado al servidor.

Luego al guardar los IBDataSets involucrados hice:
Código Delphi [-]
  tbDetal.DataSource:= nil;
  IBDatabase.ApplyUpdates([tbMaes,tbDetal]);
  IBTransaction.CommitRetaining;
  tbDetal.DataSource:= dsMaes;

Funciona bién. Pero me queda la duda si es buena manera de hacerlo o si existe otra opción...

Espero haber sido claro y gracias por leer estas líneas.

Saludos.

Última edición por ecfisa fecha: 28-08-2010 a las 22:34:08.
Responder Con Cita
  #2  
Antiguo 01-09-2010
afxe afxe is offline
Miembro
 
Registrado: jul 2004
Ubicación: Malaga-España
Posts: 273
Poder: 20
afxe Va por buen camino
Sobre cacheUpdates

El problema de las tablas maestro/detalle nos es común a todos los programadores, la solución... no, seguro que cada uno hemos ido adaptando o escogiendo una solución a raiz de nuestras experiencias, fallos, tipo de relaciones entre las tablas, etc...

Postear una cabecera y volver a editarla para terminar de rellenar datos que sólo se obtendrán cuando se hayan ido grabando los detalles es algo a lo que particularmente he recurrido varias veces. Incluso cuando trabajaba con Delphi 3 creaba tablas de memoria o lista punteros a estructuras del tipo register (poder moverme por los datos con varios punteros y varios órdenamientos) para trabajar con los detalles y luego volcarlos a la base de datos. Pero lo que mejor resultado me ha dado es usar ClientDataSet y DataSetProviders, que aunque estaban disponibles desde D5, los empezé a implentar habitualmente con D7. Merece la pena que inviertas dos o tres días en estudiar su funcionamiento. Echa un ojo a http://delphiallimite.blogspot.com/2...dataset-i.html

Saludos.
__________________
Amar al mundo apasionadamente.
Responder Con Cita
  #3  
Antiguo 01-09-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola axfe.

Muchas gracias por tu respuesta, ahora mismo voy a pegar una ojeada al link.


Saludos y gracias nuevamente.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Consulta maestro/Detalle (TibTable) mantraxer21 Varios 10 24-08-2010 20:51:07
Consulta maestro detalle. jplj SQL 5 30-05-2007 20:24:14
Consulta sobre maestro detalle ilichhernandez Conexión con bases de datos 0 18-05-2007 19:13:06
Problema con consulta en Maestro-Detalle TrUnkS SQL 2 11-10-2006 00:20:47
Consulta Maestro Detalle Acker SQL 1 10-07-2006 19:25:58


La franja horaria es GMT +2. Ahora son las 05:11:13.


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
Copyright 1996-2007 Club Delphi