Delphi - Relación Maestro/detalle con Query en Paradox

 
Vista:

Relación Maestro/detalle con Query en Paradox

Publicado por Marina (64 intervenciones) el 01/03/2001 16:09:05
Estoy haciendo un ejemplo para probar como funciona una relación Maestro/Detalle y no he logrado que funcione. Estoy intentando grabar facturas. Paso a detallar lo que hice:
- Tengo 3 Querys con CachedUpdates en True
- Q1 : Tabla que contiene un solo campo (NROCPTE) y un solo registro. El campo se va incrementando en uno por cada factura que cargo
- Q2 : Tabla que contiene los datos generales de la factura (fecha y número), contiene 1 registro por cada factura (este es el query maestro)
- Q3 : Detalle de la factura, contiene varios registros por cada factura (este es el query detalle, ambos están relacionados por el campo NROCPTE)
Hago la relación mediante la propiedad DataSource del Q3, apuntando al DataSource del Q2

En la sentencia SQL del Q3 estoy poniendo lo siguiente:
SELECT * FROM TaDetFac D
WHERE (D.NROCPTE = :NROCPTE)

El ejemplo va agregando facturas, pero teniendo esta relación no puedo lograr que se grabe en la tabla de detalle de factura ningún registro, si se graba en las otras tablas. Qué puedo hacer?
Si quito la relación maestro/detalle si logro grabar correctamente

El orden en que voy haciendo el post es el siguiente: Q1, Q2, Q3
Estoy usando el método ApplyUpdates de la base de datos (en el array que se pasa como parámetro a este método los Querys van en el orden mencionado anteriormente)
También probé hacer el ApplyUpdates de cada Query por separado, dentro de una transacción, y tampoco funciona.

No se en realidad si conviene usar el ApplyUpdates de la base de datos o el de cada Query. Según he leído en el manual de Delphi, en una sección recomiendan usar un método y luego recomiendan usar el otro

Desde ya muchas graci
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Relación Maestro/detalle con Query en Paradox

Publicado por Manuel Titín (8 intervenciones) el 01/03/2001 22:10:57
hola ! Pequeña como esta , espero que bien ...
para hacer una relacion master/detail con query
lo que debe de hacer es lo sigte:

1 cabeza :
Select campos from cabeza
where llave = :llave;
2 detalle :
Select campos from detalle
where llave = :"llave";

OJO :Las comillas !
3 Debe de agregar un DataSource y asinarle la cabeza
Datasource1.DataSet :=cabeza
puede hacerlo en tiempo de diseno

4 Asignar el Datasource al detalle
Detalle.DataSource :=Datasource1;

y con esto tiene un master/detail
el resto es igual
pero si quiere con tabla
usa la propiedad mastersource y masterfield

suerte.

Saludo desde : Santo Domingo; R.D.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar