Code: Alles auswählen
Du löst mit dem VirtualDataset quasi die von mir bemängelte fehlende Information des aktuellen Datensatzes im Subreport, was ich recht gut finde.
Folgendes habe ich geschrieben, als dein letzter Eintrag noch nicht online war - ich schaue mir deine Lösung an!
Ich denke, dein früherer Lösungsansatz ging in die richtige Richtung:
Master: Akte
Detail: TempAdressen
Spezial: Nummern
Sinnvoll lösbar scheint mir das ganze nur, indem ich die Adressen in eine temporäre Tabelle schreibe, dort zwei Memos anfüge und
dann in Schleifen das ganze mit den Nummernbezeichnungen und Nummern in den Memos ergänze:
Code: Alles auswählen
Result := '';
QueryAdressen.First;
While not QueryAdressen.EOF do
begin
QueryTelefon.close;
QueryTelefon.SQL.Text:=
'SELECT tel_id, adr_id, number FROM telefon ' +
'WHERE telefon.adr_id = ' + QueryAdressen.fieldbyname('adr_id').AsString +' '+
'ORDER BY number ASC;';
QueryTelefon.Open;
while not QueryTelefon.EOF do
begin
if NummernBlock = '' then
begin
NummernartBlock := QueryTelefon.FieldByName('numbertype').AsString;
NummernBlock := QueryTelefon.FieldByName('number').AsString;
end
else
begin
NummernartBlock := NummernartBlock + LineEnding + QueryTelefon.FieldByName('numbertype').AsString;
NummernBlock := NummernBlock + LineEnding + QueryTelefon.FieldByName('number').AsString;
end;
QueryTelefon.Next;
QueryTemp.Insert {.... Felder aus Adressen und die beiden Blöcke}
end;
end;
Jetzt kann QueryTemp als Detail auf einem Detailband für den Report verwendet werden:
Code: Alles auswählen
__________________________________________________________________________
Adress(block) NummernartBlock NummernBlock
__________________________________________________________________________
Diese Lösung funktioniert zwar, ist aber meines Erachtens nicht optimal. Solch einfache Sachen erwartet man schon von einem Reportgenerator.
Dies ist nicht abwertend sondern anregend zu verstehen!
Wird LazReport eigentlich noch aktiv betreut? - muss ich mich mal schlau machen ....
Alle sagten, dass es unmöglich sei - bis einer kam und es einfach gemacht hat.