Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi FreeReport (https://www.delphipraxis.net/133874-freereport.html)

PASST 11. Mai 2009 10:46

Datenbank: ADS • Version: 9.10 • Zugriff über: Advantage Komponenten

FreeReport
 
Hallo allerseits,

ich habe zwei Fragen zu FreeReport, die kostenlose Variante und ältere Version von FastReport.

Wie kann ich eine Variable an den Report übergeben, wie z.B. ein Anfangs- und Enddatum, auf das sich die ausgewerteten Daten beziehen?

Wie kann ich Werte, die in der Auswertung gleich '0' sind als Leerzeichen angezeigen?

Gruß
Peter

shmia 11. Mai 2009 10:54

Re: FreeReport
 
Zitat:

Zitat von PASST
Wie kann ich Werte, die in der Auswertung gleich '0' sind als Leerzeichen angezeigen?

Schreibe einen Eventhandler für [TField].OnGetText.
Delphi-Quellcode:
procedure TForm1.NumfieldOnGetText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
   if Sender.IsNull or (Sender.AsInteger=0) then
      Text := '' // zum Testen: Text := '---'
   else
      Text := Sender.AsString;
end;
Im Event AfterOpen schreibst du dann:
Delphi-Quellcode:
dataset.FieldByName('IrgendneNummer').OnGetText := self.NumfieldOnGetText;

uwewo 11. Mai 2009 12:08

Re: FreeReport
 
Hi Peter,

es geht noch etwas einfacher

Delphi-Quellcode:
frVariables['VonDatum'] := DateToStr(Date);

frVariables.Clear;//löscht alle Variablen wieder
Uwe

PASST 11. Mai 2009 16:13

Re: FreeReport
 
@uwewo
Vielen Dank, dass klappt wunderbar.

@shmia
Das klappt eigentlich auch, zumindest solange ich mir die Daten in einem DBGrid anzeigen lasse. FreeReport gibt eine Exception EVariantTypeCastError aus: 'Variante des Typs [String] konnte nicht in Typ [Double] konvertiert werden.'
Das kann ich aber lösen, indem ich alle leeren Werte gleich dem Text '0' setze. Alle mal besser, als wenn die Werte teilweise 0 und teilweise leer sind.

shmia 11. Mai 2009 17:15

Re: FreeReport
 
Zitat:

Zitat von PASST
...Exception EVariantTypeCastError aus: 'Variante des Typs [String] konnte nicht in Typ [Double] konvertiert werden.'

Da kann man noch etwas ändern:
Delphi-Quellcode:
procedure TForm1.NumfieldOnGetText(Sender: TField; var Text: String; DisplayText: Boolean);
begin
   if StrToIntDef(Sender.AsString, 0) = 0 then
      Text := '' // zum Testen: Text := '---'
   else
      Text := Sender.AsString;
end;

PASST 12. Mai 2009 07:04

Re: FreeReport
 
Das führt leider auch nicht zum Erfolg. Ich erhalte die selbe Fehlermeldung.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:59 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz