![]() |
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Wieso liest Du die Daten nicht einfach ein, kopierst sie in ein CDS, fügst Leerzeilen an den Stellen ein, die dir gefallen, und druckst das ganze vollkommen straightforward im FastReport aus? Das ist eine Sache von 5 Minuten und Du musst weder die Query noch deinen aktuellen Report anfassen...
|
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Auf die Frage, ob es wirklich so schwer ist: Ja und Nein.
Da es noch keine Programmiersprache gibt die das DeveloperMindInterface unterstützt, muss man alles haargenau vorkauen. Mit einer richtigen Datenbank erstellt man sich dafür eine StoredProcedure und gibt die Anlagennummer mit. Dann wird dort mit temporären Tabellen die gewünschte Struktur und Satzanzahl erstellt und zurückgeliefert. Das ist definitiv nicht schwer. Darum als Antwort Ja und Nein |
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Zitat:
|
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mal schnell in Fastreport einen Report mit Lückenanzeige gemacht (siehe Anhang).
Ist auch relativ wenig Arbeit, man muss nur: zum MasterData ein Child machen... Die Daten ins Child... Die Lückentexte auf MasterData Und im MasterData PrinChildIfInvisible auf True setzen.
Code:
Ich verlagere zwar auch gern alles auf die Datenebene, aber das hier kann man durchaus im Report lösen.
Var
LetzteNummer: Integer; AnzahlLuecken: Integer; procedure frxReport1OnStartReport(Sender: TfrxComponent); begin LetzteNummer := 0; end; procedure LabelLueckeOnBeforePrint(Sender: TfrxComponent); begin LabelLuecke.Text := InttoStr(AnzahlLuecken) + ' fehlende Nummern'; end; procedure MasterData1OnBeforePrint(Sender: TfrxComponent); begin AnzahlLuecken := <frxDBDataset1."Nummer"> - 1 - LetzteNummer; LetzteNummer := <frxDBDataset1."Nummer">; BandData.Visible := False; if AnzahlLuecken > 0 then BandData.Visible := True; end; begin end. Frank |
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Zitat:
Na, ok. Ich halte mich raus. |
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Zitat:
Das PreProcessing kann ja auch relativ einfach implementiert werden mit einem Interface
Delphi-Quellcode:
Dabei sieht die einfachste Umsetzung so aus
IDataSetPreProcessor = interface
function GetDataSet : TDataSet; procedure SetDataSet( Value : TDataSet ); property DataSet : TDataSet read GetDataSet write SetDataSet; end;
Delphi-Quellcode:
Und ein spezielles würde dann aus dem Dataset vom Setter ein ClientDataSet erzeugen und diese Zeilen dazu mogeln und über den Getter das veränderte ClientDataSet liefern. ;)
TNullDataSetPreProcessor = class( TInterfacedObject, IDataSetPreProcessor )
private FDataSet : TDataSet; function GetDataSet : TDataSet; procedure SetDataSet( Value : TDataSet ); end; function TNullDataSetPreProcessor.GetDataSet : TDataSet; begin Result := FDataSet; end; procedure TNullDataSetPreProcessor.SetDataSet( Value : TDataSet ); begin FDataSet := Value; end; PS Vor ein paar Tagen/Wochen hatte ich mich schon mal zum Thema Reporting ausgelassen und angeregt dem Reporter nicht direkt mit der Datenbank zu verbinden, sondern dem Reporter eine Struktur zu übergeben, aus der der Kontext (was sind das denn für Daten) und die Daten selber (z.B. als ClientDataSet-Binary/XML) zu übergeben. Der Reporter kann dann entscheiden, mit welchen Reports das dargestellt werden kann und auch (in diesem Fall) noch die Daten vorher bearbeiten (Leerzeilen einfügen). Ein wesentlicher Vorteil ist das Speichern dieser Informationen um Berichte reproduzierbar speichern zu können und auch um dem Benutzer bei der Berichtsgestaltung eine Beispiel-Datenmenge an die Hand zu geben, die alle Möglichkeiten der Datenmenge beinhaltet. |
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Zitat:
Zitat:
|
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Zitat:
(s. mein Update vom vorherigen Beitrag) |
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Danke schon mal und Gruß Jens |
AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz
Zitat:
Sie es mal so: Eine einfache Lösung (es handelt sich hier um eine einzige kleine Methode) schließt die zukünftige Erweiterbarkeit nicht aus. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz