AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fastreport Variablen übergeben und anzeigen
Thema durchsuchen
Ansicht
Themen-Optionen

Fastreport Variablen übergeben und anzeigen

Ein Thema von Salomon · begonnen am 25. Okt 2007 · letzter Beitrag vom 29. Okt 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#1

Fastreport Variablen übergeben und anzeigen

  Alt 25. Okt 2007, 13:07
Datenbank: MS SQL • Zugriff über: ADO
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
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Fastreport Variablen übergeben und anzeigen

  Alt 25. Okt 2007, 13:56
Du musst Deinen Variablen noch eine Kategorie in FR4 geben.

Das macht man mit
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.
frxReport1.Variables['MyVariable1'] := 10; /Edit
Hatte da ein Bisschen was verwechselt und korrigert.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#3

Re: Fastreport Variablen übergeben und anzeigen

  Alt 25. Okt 2007, 15:03
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"]
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: Fastreport Variablen übergeben und anzeigen

  Alt 25. Okt 2007, 15:14
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.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#5

Re: Fastreport Variablen übergeben und anzeigen

  Alt 26. Okt 2007, 08:10
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
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: Fastreport Variablen übergeben und anzeigen

  Alt 26. Okt 2007, 08:12
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?
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#7

Re: Fastreport Variablen übergeben und anzeigen

  Alt 26. Okt 2007, 08:41
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.
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#8

Re: Fastreport Variablen übergeben und anzeigen

  Alt 26. Okt 2007, 08:58
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.
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#9

Re: Fastreport Variablen übergeben und anzeigen

  Alt 26. Okt 2007, 09:57
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

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.
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#10

Re: Fastreport Variablen übergeben und anzeigen

  Alt 26. Okt 2007, 12:17
Stimmt.

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

FrxStandardReport.Variables['LicenseCompany'] := '''' + Engine.LicenseCompany + '''';
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 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