Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Delphi Fastreport - code..... (https://www.delphipraxis.net/176806-fastreport-code.html)

brunoM 27. Sep 2013 13:41

Fastreport - code.....
 
Hallo zusammen

Ich benutze Fastreport und komme damit auch gut klar. Ich habe eine Datenbanktabelle an den Report gebunden und möchte bestimmte Werte individuell ausgeben. D.h. wenn z.B ein Boolean-Datenbankfeld true enthält möchte ich in einem Memo einen speziellen string z.B. "ok" ausgeben.

Kann mir jemand sagen, wie ich innerhalb von Fastreport auf die Datenbankfelder zugreifen kann? Es scheint mir nicht genau so zu gehen wie mit den Datenbankkomponenten von Delphi. Jedenfalls bin ich noch zu keinem Ergebnis gekommen.

Besten Dank für die Antworten im Voraus.

Gruss

Bruno

DeddyH 27. Sep 2013 13:46

AW: Fastreport - code.....
 
Ich habe hier zwar eine speziell angepasste Version von FastReport vor der Nase, aber das wird im Original vermutlich nicht anders sein: über "Ansicht- Symbolleisten - Datenbaum" kannst Du Dir die zur Verfügung stehenden Tabellen(felder) anzeigen lassen. Diese kannst Du dann einfach per Drag and Drop direkt in den Code ziehen.

sx2008 27. Sep 2013 13:55

AW: Fastreport - code.....
 
Am Einfachsten wird sein wenn du dem betreffenden Feld ein OnGetText-Handler zuordnest.
Dies funktioniert für alle Arten von Reportgeneratoren.

Delphi-Quellcode:
procedure TMain.OnGetTextBoolHandler(Sender: TField; var Text: string;
  DisplayText: Boolean);
begin
  if sender.AsBoolean then
    Text := 'ok'
  else
    Text := '---';
end;

...
// und im AfterOpen - Event des Datasets wird der Eventhandler eingeklinkt
begin
  Dataset.FieldByName('Bezahlt').OnGetText := OnGetTextBoolHandler;
  // man kann den gleichen Handler für mehrere Felder verwenden
  Dataset.FieldByName('Geliefert').OnGetText := OnGetTextBoolHandler;

ensaron 27. Sep 2013 14:03

AW: Fastreport - code.....
 
Eine andere Möglichkeit wäre, das "OnBeforePrint"-Event vom MasterData zu nutzen.

Delphi-Quellcode:
var
  Ausgabe : String;
                                   
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
  Ausgabe := '';
  if <Tabelle."Boolean_Feld"> then
    Ausgabe := 'ok';                                                        
end;

begin
end.
In der Oberfläche des Reports muss man dann im MasterData noch ein Memo mit Inhalt "[Ausgabe]" hinzufügen.

DeddyH 27. Sep 2013 14:05

AW: Fastreport - code.....
 
Sofern ich die Frage richtig verstanden habe geht es ja genau darum, wie man auf <Tabelle."Boolean_Feld"> zugreift.

brunoM 27. Sep 2013 14:35

AW: Fastreport - code.....
 
Hallo zusammen

Erst mal herzlichen Dank für eure schnellen Antworten. Ja es ist so - ich möchte wissen wie man auf das entsprechende Datenfeld zugreift.

VCLControls 27. Sep 2013 14:55

AW: Fastreport - code.....
 
Zitat:

Zitat von DeddyH (Beitrag 1230143)
Sofern ich die Frage richtig verstanden habe geht es ja genau darum, wie man auf <Tabelle."Boolean_Feld"> zugreift.

Hat Ensaron nicht genau das getan? Im onBeforePrint auf die Datenquelle (<Tabelle."Boolean_Feld"> ) zugreifen, wenn True dann Variable "Ausgabe" bestücken und die dann im Report verwenden.

DeddyH 27. Sep 2013 15:25

AW: Fastreport - code.....
 
Und woher weiß man nun auf Anhieb die Syntax? Ich habe in meinem aktuell zu bearbeitenden Report so lustige Dinge drin wie
Zitat:

<TFrxAddressGenerator1."verknüpfte Rolle (AllowToPerson)">
, da bin ich froh, dass das mit Drap and Drop funktioniert.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03: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-2025 by Thomas Breitkreuz