Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#46

AW: Fast Report - Leerzeile einfügen bei fehlendem Datensatz

  Alt 5. Dez 2014, 09:35
Bitte nicht, diese Vorgehensweise ..hatte ich schon vorgeschlagen...
Weil man Niemanden zu seinem Glück zwingen sollte? Die vorgehensweise von Dataspider ist mindestens genauso simpel, wenn man schon mal mit FR Scripten gearbeitet hat.
Auch dazu hatte ich mich schon ausgelassen, und die Variante von dataspider würde ich immer dann wählen, wenn ich keinen Einfluss auf die Eingangsdaten habe, ich also nur den Report bearbeiten kann. Ansonsten wähle ich da PreProcessing (Daten vor dem Report aufbereiten) und das geschieht dann entweder in der Datenbank, oder wesentlich einfacher umzusetzen (und funktioniert dann immer, egal welche Datenbank) in der Anwendung.

Das PreProcessing kann ja auch relativ einfach implementiert werden mit einem Interface
Delphi-Quellcode:
IDataSetPreProcessor = interface
  function GetDataSet : TDataSet;
  procedure SetDataSet( Value : TDataSet );
  property DataSet : TDataSet read GetDataSet write SetDataSet;
end;
Dabei sieht die einfachste Umsetzung so aus
Delphi-Quellcode:
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;
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.

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.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo ( 5. Dez 2014 um 09:48 Uhr)
  Mit Zitat antworten Zitat