Hola rufo, utiliza etiquetas cuando pongas codigo, sobre tu pregunta, el QuickReport solo puede estar asociado a un DataSet, tu estas utilizando varios, los datos del DataSet asociado al QuickReport te saldran bien pero de los demas solo te va ha mostrar el primer registro, en tu caso el ultimo porque en esta parte estas recorriendo y se queda apuntando al ultimo registro.
Código Delphi
[-]
with dm1.Q_depenformato do
begin
active:=false;
sql.clear;
sql.add('select * from dependientes');
sql.add('where id_dependiente in (select id_dependiente from dependientes');
sql.add(' where id_afiliado ='+edit1.text+')');
active:=true;
first;
if recordcount<>0 then
begin
listbox3.Items.Clear;
listbox2.Items.Clear;
listbox1.Items.Clear;
while not(eof) do
begin
listbox1.Items.add(fieldbyname('nombre_dependiente').asstring);
listbox2.Items.add(fieldbyname('f_nacimiento_dependiente').asstring);
listbox3.Items.Add(fieldbyname('lugar_residencia').asstring);
next;
end;
end;
end;
Si quieres pasar lo que tienes en los ListBox que llenas, puedes utilizar un QrMemo y haces lo siguiente:
Código Delphi
[-]
fr_formato.QRMemo1.Lines := ListBox1.Items;
O hacer una relación maestro detalle, todo dependiendo como quieres mostrar los datos.
Saluditos