Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Fastreport Variablen übergeben und anzeigen (https://www.delphipraxis.net/102240-fastreport-variablen-uebergeben-und-anzeigen.html)

Salomon 25. Okt 2007 13:07

Datenbank: MS SQL • Zugriff über: ADO

Fastreport Variablen übergeben und anzeigen
 
Hi,
wie kann ich Variablen an Fastreport übergeben und als Text anzeigen, oder in einer Query innerhalb des Reports verwenden? Ich habe es momentan wie folgt versucht, erhalte aber immer die Meldung, das die Variable nicht gefunden wurde...

Delphi-Quellcode:
procedure TDM_Report.ShowActivityReport(ReportType: TReportType);
const
  ReportFiles: array[TReportType] of String =
    ('Activity.fr3');
var
  DB: TfrxADODatabase;
  FileName: String;
begin

  FileName := ExtractFilePath(ParamStr(0));
  if frxActivityReport.LoadFromFile(FileName + ReportFiles[ReportType]) then
  begin
    DB := frxActivityReport.FindComponent('ADODatabase') as TfrxADODatabase;
    DB.DatabaseName := FRM_Main.ReadConnection.ConnectionString;
    DB.Connected := True;

    frxActivityReport.ShowReport;
  end
  else
    ShowMessage('Could not find report file "' + ReportFiles[ReportType] + '".');
end;

procedure TFRM_AddActivity.Button2Click(Sender: TObject);
var
  RT: TReportType;
begin
  DM_Report.frxActivityReport.Variables['FromDate'] := '22.10.2007 23:59:59';
  DM_Report.frxActivityReport.Variables['ToDate']  := '28.10.2007 23:59:59';

  RT := TReportType(rtActivity);
  DM_Report.ShowActivityReport(RT);
end;
Die Variable innerhalb des Reports anzuzeigen müsste doch mit einem Memo mit dem Inhalt [FromDate] funktionieren??

Thanx
Marcus

RavenIV 25. Okt 2007 13:56

Re: Fastreport Variablen übergeben und anzeigen
 
Du musst Deinen Variablen noch eine Kategorie in FR4 geben.

Das macht man mit
Delphi-Quellcode:
frxReport1.Variables[' ' + 'MyVariables'] := Null;
Dann kannst Du Deine Variablem auch im Fastreport benutzen. Sie sind dann in der Kategorie "MyVariables".

Alle Varuiablen, die Du dann hinzufügst, sind automatisch in dieser Kategorie.
Delphi-Quellcode:
frxReport1.Variables['MyVariable1'] := 10;
/Edit
Hatte da ein Bisschen was verwechselt und korrigert.

Salomon 25. Okt 2007 15:03

Re: Fastreport Variablen übergeben und anzeigen
 
Jupp, habe ich auch gerade gesehen. Ich habe das soweit korrigiert. Leider komme ich im Report immer noch nicht an die Variable... Müsste man für das Beispiel folgendes in das Memo im Report schreiben?

[MyVariables."MyVariable1"]

RavenIV 25. Okt 2007 15:14

Re: Fastreport Variablen übergeben und anzeigen
 
Also ich habe mir eine Variable "Startdate" in "Kategorie1" erstellt.

Im Fastreport (Version 4) mach ich nun folgendes:
- Memo hinzufügen
- Doppelklick auf das Memo
- Reiter "Text" auswählen
- Toolbutton "ABC" drücken
- im neuen Fenster Reiter "Variablen" auswählen
- Kategorie1 öffnen
- Startdate doppelklicken und es wird in das untere Feld "Ausdruck" übernommen
- OK und es wird ins Memo-Feld übernommen
- nochmal OK und es steht im Report im Memo drin. Dort steht "[Startdate]"
- <F9> drücken, um den Report anzuschauen

Ich habe dies extra für Dummies geschrieben, weil Du ja Probleme damit hattest.

Salomon 26. Okt 2007 08:10

Re: Fastreport Variablen übergeben und anzeigen
 
Mmh, genau so habe ich es auch probiert. Nur wenn ich die Variable im Code erzeuge taucht Sie im FastReport Designer nicht unter "Variablen" auf. Daher kann ich sie auch nicht auswählen...

Schreibe ich den Text per Hand in das Memo klappt es auch nicht. "Undeclared Identifier: "FromHour" Ist ja echt zum verrückt werden :(

RavenIV 26. Okt 2007 08:12

Re: Fastreport Variablen übergeben und anzeigen
 
Zitat:

Zitat von Salomon
Mmh, genau so habe ich es auch probiert. Nur wenn ich die Variable im Code erzeuge taucht Sie im FastReport Designer nicht unter "Variablen" auf. Daher kann ich sie auch nicht auswählen...

Schreibe ich den Text per Hand in das Memo klappt es auch nicht. "Undeclared Identifier: "FromHour" Ist ja echt zum verrückt werden :(

Hast Du mal einen kompletten Build gemacht?

Wie lädst Du die Reports?

Salomon 26. Okt 2007 08:41

Re: Fastreport Variablen übergeben und anzeigen
 
Ich lade die "Activity.fr3" mit der Function die im ersten Post steht. Angezeigt wird er dann mit frxActivityReport.ShowReport;

Ich habe gerade mal als Variable einen integer wert übergeben, das geht! Sobald ich einen String angebe funktioniert es nicht mehr.

Kann doch nicht sein das ich keine Strings übergeben kann. Wie soll ich dann Zeiutraumauswertung Von - Bis machen??

Was meinst du mit einem kompletten Build? Das Project wird jedesmal komplett neu compiliert.

RavenIV 26. Okt 2007 08:58

Re: Fastreport Variablen übergeben und anzeigen
 
Also ich übergebe Boolean, String, Integer ohne Probleme.

Mit "Build" meine ich "Projekt erzeugen" und nicht "Projekt kompilieren".

Machst Du eigentlich vor dem ShowReport auch ein PrepareReport?
Ich seh das grad nicht bei Dir im Code.

Und versuch mal anstatt ShowReport das ShowPreparedReport.

Salomon 26. Okt 2007 09:57

Re: Fastreport Variablen übergeben und anzeigen
 
Die Änderungen habe ich vorgenommen. Leider ohne Erfolg. Das scheint mir irgend ein komischer Bug zu sein :( Trotzdem schon mal vielen Dank für deine Hilfe :)

Ich habe den Wert der Variable mal im OnGetValue Event der frxReportKomponente "abgefangen". Da steht nichts drin... Wenn ich hier das Value ändere wird er im Report angezeigt. Das ist aber nicht der schönste Weg die Variablen in den Report zu bekommen :lol:

Delphi-Quellcode:
procedure TDM_Report.frxActivityReportGetValue(const VarName: string;
  var Value: Variant);
begin
  if CompareText(VarName, 'FromDate') = 0 then
  begin
    showmessage(Value);
    Value := 'test';
  end;
end;

//Nachtrag
Habs jetzt endlich gelöst :???: Ganz einfach wenn man die richtigen Dokumente gefunden hat. Aber auf diese Syntax muss man auch erst mal kommen.


Zitat:

It should be noted, that when accessing a report variable its value is calculated if it
is of string type. That means the variable which value is 'Table1."Field1"' will return a value
of a DB field, but not the 'Table1."Field1"' string. You should be careful when assigning a
string-type values to report variables. For example, the next code will raise exception
"unknown variable 'test'" when running a report:
frxReport1.Variables['My Variable'] := 'test';
because FastReport trying to calculate a value of such variable. The right way to pass a
string values is:
frxReport1.Variables['My Variable'] := '''' + 'test' + '''';
In this case the variable value - string 'test' will be shown without errors. But keep
in mind that:
- string should not contain single quotes. All single quotes must be doubled;
- string should not contain #13#10 symbols.

RavenIV 26. Okt 2007 12:17

Re: Fastreport Variablen übergeben und anzeigen
 
Stimmt.

Jetzt wo ich es gelesen habe und nochmal in den Code geschaut habe.
Ich übergebe Strings auch mit den komischen einfachen Anführungszeichen.

Delphi-Quellcode:
FrxStandardReport.Variables['LicenseCompany'] := '''' + Engine.LicenseCompany + '''';


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:53 Uhr.
Seite 1 von 2  1 2      

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