PDA

Ver la Versión Completa : algo como maestro-detalle, pero diferente


mez
15-05-2007, 22:57:28
Que tal,
he buscado en el foro y no he pillado algo parecido a mi problema, aquii va:

tengo un QReport (delphi 5) donde debo desplegar los datos de una persona (tabla persona) y para cada persona listar todos sus hijos, los hijos tambien estan en la tabla persona, pero tienen un campo donde indica quien es su padre, por lo tanto pongamos que los hijos estan en una query SQLHijos.

pues bien, al hacerlo con detail, subdetail, me aparece solo el ultimo hijo, como si la banda subdetail se estuviera escribiendo siempre encima. estoy usando beforeprint para manejarlo con printband cuando quiero terminar de recorrer el sqlhijos.

alguna idea?

gracias

Caral
15-05-2007, 23:04:28
Hola mez
Tal vez indicandonos los nombres de los campos de esa tabla y como mas o menos esta conformada.
Ademas indicar como muestras la consulta, es sql o directa a tabla, me parece entender? pero no estoy totalmente claro.
Saludos

Caral
15-05-2007, 23:08:06
Hola

Query1.close;
Query1.sql.text:= 'Selecte * from persona where persona.padre= campo';
query1.open;

Una sentencia sql sencilla, no?
Saludos

mez
16-05-2007, 00:11:07
En la banda QRSubDetail estan los datos del padre:


Código Delphi [-] (http://www.clubdelphi.com/foros/#)procedure TqrReportePersonal.QRSubDetailNeedData(Sender: TObject; var MoreData: Boolean);
begin
MoreData:=(not qPersona.Eof);
if MoreData then
begin
qrLabel1.Caption:=qPersona.FieldByName('PERSONA_NOMBRE').AsString;
.
.
.
end;
if qPersona.FieldByName('PERSONA_TIPO').AsString='P' then //ES "PADRE"
begin
qHijos.ParamByName('padre').asstring :=qPersona.FieldByName('PERSONA_CLAVE').AsString;
qHijos.Open;
end;
end;




En la banda ChildBand (hija de la anterior) estaria el detalle, es decir, los hijos:


Código Delphi [-] (http://www.clubdelphi.com/foros/#)
procedure TqrReportePersonal.ChildBandBeforePrint(Sender: TQRCustomBand; var PrintBand: Boolean);
begin
while not qHijos.eof do
begin
qrLabel1.Caption:=qHijos.FieldByName('PERSONA_NOMBRE').AsString;
.
.
.
qHijos.Next;
PrintBand:=true;
end;
PrintBand:=true;
qPersona.Next;
inc(cont);
qHijos.Close;
end;





El tema es que, los datos del padre me aparecen bien, pero los datos de hijo, siempre me aparece sólo el último de ellos, como si en la Banda Child se estuviera escribiendo sobre la misma linea. Al hacer seguimiento recorre todos los hijos, pero solo despliega el último.

alguna idea?