LazReport - Lazarus variable Übergeben

Rund um die LCL und andere Komponenten
Antworten
Int3g3r
Beiträge: 10
Registriert: Mo 1. Aug 2022, 17:01

LazReport - Lazarus variable Übergeben

Beitrag von Int3g3r »

Guten Abend

Wie kann ich eine Variable in Lazarus an den Report übergeben?
Habe folgendes versucht: https://wiki.freepascal.org/LazReport_Tutorial
(Siehe "General purpose variables")

Ich erhalte keinen Fehler.
Die Variable wird aber im Report nicht angezeigt (Bleibt Leer).

Ich möchte nur die TotalRecords im Report angezeigt bekommen.
Als alternative hat jemand ein Beispiel wie ich alle Records in LazReport zählen und anzeigen kann?

Code: Alles auswählen

procedure TfrmMain.btnReportClick(Sender: TObject);
var reportAlbum:string;
begin
  reportAlbum:= ExtractFilePath(ParamStr(0))+'Reports\Albums.lrf';
  try
     frReport1.LoadFromFile(reportAlbum);
     frReport1.Values.FindVariable('RecordCount').Field := QuotedStr('TEST');
     frReport1.ShowReport;
  except
     ShowMessage('Fehler beim öffnen vom Report.'+#13#10+reportAlbum);
  end;
end;    
2022-12-23 20_18_25-Window.png
2022-12-23 20_18_25-Window.png (2.89 KiB) 857 mal betrachtet
2022-12-23 20_17_27-Window.png
2022-12-23 20_17_27-Window.png (15.96 KiB) 857 mal betrachtet


Gruss Int3g3r

oleg
Beiträge: 28
Registriert: So 6. Okt 2019, 17:04
OS, Lazarus, FPC: Win10Pro-(Laz 2.2.0 - FPC 3.2.0)-Rasp4(8GB)+MySQL+GITEA 1.20.2 <-> GIT 2.44.0
Wohnort: Leipzig

Re: LazReport - Lazarus variable Übergeben

Beitrag von oleg »

nach dem Öffnen deiner Query hat sie die Eigenschaft der Gesamtdatensätze : DataModul.ZQuery1.RecordCount

Code: Alles auswählen


  frVariables.Clear; // alles alte Zeug löschen
  frVariables['Record_count']:= DataModul.ZQuery1.RecordCount;

Die Variable Record_Count muss im Formular erzeugt werden und kann dann normal im Dokument platziert werden.
Im Zweifelsfall kannst du den Wert auch mit IntToStr(DataModul.ZQuery1.RecordCount) übergeben.

Int3g3r
Beiträge: 10
Registriert: Mo 1. Aug 2022, 17:01

Re: LazReport - Lazarus variable Übergeben

Beitrag von Int3g3r »

oleg hat geschrieben:
Sa 24. Dez 2022, 01:07
nach dem Öffnen deiner Query hat sie die Eigenschaft der Gesamtdatensätze : DataModul.ZQuery1.RecordCount

Code: Alles auswählen


  frVariables.Clear; // alles alte Zeug löschen
  frVariables['Record_count']:= DataModul.ZQuery1.RecordCount;

Die Variable Record_Count muss im Formular erzeugt werden und kann dann normal im Dokument platziert werden.
Im Zweifelsfall kannst du den Wert auch mit IntToStr(DataModul.ZQuery1.RecordCount) übergeben.
Hallo Oleg

Leider verstehe ich nicht wo ich den Code eintragen muss.
Ist dieser im Report einzutragen? Wenn ja wo?
Ich habe keine "frVariable" Komponente auf dem From.
Ist das erste Mal das ich LazReport verwende.

Benutzeravatar
gladio
Beiträge: 217
Registriert: Sa 21. Jun 2014, 06:15
OS, Lazarus, FPC: Win10-64 - aktuelle Lazarus/FPC Standard-Edition
CPU-Target: 64Bit
Wohnort: Rügen

Re: LazReport - Lazarus variable Übergeben

Beitrag von gladio »

Schau mal, ob dir das weiter hilft: viewtopic.php?p=94403#p94403
Eigene Variablen übergibst du besser in OnGetValue .

oleg
Beiträge: 28
Registriert: So 6. Okt 2019, 17:04
OS, Lazarus, FPC: Win10Pro-(Laz 2.2.0 - FPC 3.2.0)-Rasp4(8GB)+MySQL+GITEA 1.20.2 <-> GIT 2.44.0
Wohnort: Leipzig

Re: LazReport - Lazarus variable Übergeben

Beitrag von oleg »

Int3g3r hat geschrieben:
So 25. Dez 2022, 22:19
oleg hat geschrieben:
Sa 24. Dez 2022, 01:07
nach dem Öffnen deiner Query hat sie die Eigenschaft der Gesamtdatensätze : DataModul.ZQuery1.RecordCount

Code: Alles auswählen


  frVariables.Clear; // alles alte Zeug löschen
  frVariables['Record_count']:= DataModul.ZQuery1.RecordCount;

Die Variable Record_Count muss im Formular erzeugt werden und kann dann normal im Dokument platziert werden.
Im Zweifelsfall kannst du den Wert auch mit IntToStr(DataModul.ZQuery1.RecordCount) übergeben.
Hallo Oleg

Leider verstehe ich nicht wo ich den Code eintragen muss.
Ist dieser im Report einzutragen? Wenn ja wo?
Ich habe keine "frVariable" Komponente auf dem From.
Ist das erste Mal das ich LazReport verwende.
Hallo du hast ja bereits folgenden Code:

Code: Alles auswählen

procedure TfrmMain.btnReportClick(Sender: TObject);
var reportAlbum:string;
begin
  reportAlbum:= ExtractFilePath(ParamStr(0))+'Reports\Albums.lrf';
  try
     frReport1.LoadFromFile(reportAlbum);
       // neue  Zeilen:
       frVariables.Clear; // alles alte Zeug löschen
       frVariables['Record_count']:= DataModul.ZQuery1.RecordCount;
       // alte zeile -> raus
       // frReport1.Values.FindVariable('RecordCount').Field := QuotedStr('TEST');
     frReport1.ShowReport;
  except
     ShowMessage('Fehler beim öffnen vom Report.'+#13#10+reportAlbum);
  end;
end;    

Antworten