Linking double pages LazReport to DataSets in RunTime lazarus / 16-Databases ---------------------------------------------------------------------- szeti · 2011-09-13 09:58 Hello!. (Sorry for my english!) I'm trying to link a DS Dataset1 to a tfrDBDataset1 object and a DS Dataset2 to a tfrDBDataSet2 object to make a double pages report (Page1 and Page2) with lazreport. In design time it's very easy because set the Data source of the Master Data Band in the Page. When I try it in runtime it is wrong. I try in the onBeginBand event, but is wrong: „Invalid type cast” procedure MyObject.frPtjBeginBand(Band: TfrBand);  var Band1,Band2,Band3: TfrBand; begin  Band1:=frPtj.FindObject('MasterData1') as TfrBand;  Band1.DataSet:=frPtjDS;  Band2:=frPtj.FindObject('MasterData2') as TfrBand;  Band2.DataSet:=frPtjFkvDS; end; What is the good procedure and what is the good event in the LazReport? ---------------------------------------------------------------------- jesusr · 2011-09-14 18:12 Try this: Code: [Select].... var    b: TfrBandView;    ... begin    b := TfrBandView(frPtj.FindObject('MasterData1'));    b.DataSet := 'frPtjDS'; // Note this the name (a string) of frPtjDS tfrDbDataset object    ... end; ---------------------------------------------------------------------- szeti · 2011-09-14 19:41 Hi!  Thanks a lot, so already it works. ---------------------------------------------------------------------- szeti · 2011-09-17 14:08 I have a question about the Lazreport. I to search for answer from the net, but I didn’t  find it. I made a double pages frPtj:TfrReport (Page1, Page2).  All the page have a Master Data Band (frPtjDS->Master Data1 of Page1 , frPtjFkvDS-> Master Data of Page2). In design time it's very easy because I set the Data source of the Master Data Band in the Pages. When I try it in runtime it is wrong. Example: ********************************************************************** ******************** unit tasks; {$mode objfpc}{$H+} interface uses   Classes, SysUtils, Dialogs, Rutin, LR_Class, Reports, LR_DBSet, LR_DSet, lr_e_pdf,   FileUtil; type   MyObject=Class(TObject)   procedure TaskPtjel(Show: Boolean; tmb: array of string);   procedure frPtjGetValue(const ParName: String; var ParValue: Variant);   procedure frPtjDSFirst(Sender: TObject);   procedure frPtjDSNext(Sender: TObject);   procedure frPtjFkvDSCheckEOF(Sender: TObject; var VEof: Boolean);   procedure frPtjFkvDSFirst(Sender: TObject);   procedure frPtjFkvDSNext(Sender: TObject);   private     { private declarations }   public     { public declarations }   end;   var TaskObject: MyObject;       Comp:TComponent;       frOwner:TComponent;       frPtjDS:TfrDBDataSet;       frPtj:TfrReport;       frPtjFkvDS: TfrUserDataSet; ...; implementation        Uses ...; procedure MyObject.frPtjGetValue(const ParName: String; var ParValue: Variant); var...; begin  ...;  end; procedure MyObject.frPtjDSFirst(Sender: TObject); var...; begin  ...;  end; procedure MyObject.frPtjDSNext(Sender: TObject); var...; begin  ...;  end; procedure MyObject.frPtjFkvDSCheckEOF(Sender: TObject; var VEof: Boolean); var...; begin  ...;  end; procedure MyObject.frPtjFkvDSFirst(Sender: TObject); var...; begin  ...;  end; procedure MyObject.frPtjFkvDSNext(Sender: TObject); procedure MyObject.TaskPtjel(Show: Boolean; tmb: array of string); var ...; begin  frOwner:=TComponent.Create(Comp);  frPtj:=TfrReport.Create(frOwner);  frPtjDS:=TfrDBDataSet.Create(frOwner);  frPtjFkvDS:=TfrUserDataSet.Create(frOwner);  frPtjDS.DataSet:=DataModule1.frZQPtjel;  //frPtj.Dataset:=frPtjDs;  frPtj.OnGetValue:=@frPtjGetValue;  frPtjDS.OnFirst:=@frPtjDSFirst;  frPtjDS.OnNext:=@frPtjDSNext;  frPtjFkvDS.OnCheckEOF:=@frPtjFkvDSCheckEOF;  frPtjFkvDS.OnFirst:=@frPtjFkvDSFirst;  frPtjFkvDS.OnNext:=@frPtjFkvDSNext; ...; frPtj.LoadFromFile('MyReport.lrf'); frPtj.ShowReport; ... end; end. ********************************************************************** ******************** If I don’t set the frPtj.DataSet then Page1 and Page2 include Report Title and Page Header only, but no MasterData rows. If I do set the frPtj:=frPtjDS then Page1 is OK, but Page2 is empty. If I do set the frPtj:=frPtjFkvDS then Page2 is OK, but Page1 is empty.  How I do make the correct  Lazreprt with Page1 and Page2, in runtime? ---------------------------------------------------------------------- antonioJOF · 2022-11-04 13:00 lazreport search datasets by name. (in LR_Class CreateDS) You must asign the TfrDBDataSet name property for runtime created DS frPtjDS.Name='frPtjDS';