unit DARBService_Impl; {----------------------------------------------------------------------------} { This unit was automatically generated by the RemObjects SDK after reading } { the RODL file associated with this project . } { } { This is where you are supposed to code the implementation of your objects. } {----------------------------------------------------------------------------} interface uses {vcl:} Classes, SysUtils, {RemObjects:} uROClientIntf, uROTypes, uROServer, uROServerIntf, uROSessions, {Ancestor Implementation:} DataAbstractService_Impl, {Used RODLs:} DataAbstract4_Intf, {Generated:} ReportBuilderLibrary_Intf, uDADataStreamer, uDABinAdapter, ppBands, ppCache, ppClass, ppProd, ppReport, DB, uDADataTable, uDAScriptingProvider, uDACDSDataTable, ppComm, ppRelatv, ppDB, ppDBPipe, uDAClasses, uDaInterfaces; type { TDARBService } TDARBService = class(TDataAbstractService, IDARBService) DASchema: TDASchema; ppReport: TppDBPipeline; dtReport: TDACDSDataTable; dsReport: TDADataSource; Report: TppReport; ppHeaderBand1: TppHeaderBand; ppDetailBand1: TppDetailBand; ppFooterBand1: TppFooterBand; BinDataStreamer: TDABinDataStreamer; procedure DataAbstractServiceActivate(const aClientID: TGUID; aSession: TROSession; const aMessage: IROMessage); procedure DataAbstractServiceDeactivate(const aClientID: TGUID; aSession: TROSession); private fConnection: IDAConnection; protected { IDARBService methods } function DA_GenReport(const ReportName: string; const DatasetName: string): Binary; end; implementation {$R *.dfm} uses {Generated:} ReportBuilderLibrary_Invk, ReportBuilder_ServerMain; procedure Create_DARBService(out anInstance: IUnknown); begin anInstance := TDARBService.Create(nil); end; { DARBService } function TDARBService.DA_GenReport(const ReportName: string; const DatasetName: string): Binary; var ds: IDADataset; s: TMemoryStream; begin s := TMemoryStream.Create; result := Binary.Create; try Report.DataPipeline := ppReport; Report.Template.FileName := ReportBuilder_ServerMainForm.AppPath + ReportName; Report.Template.LoadFromFile; Report.Template.Load; ds := DASchema.NewDataset(fConnection, DatasetName); BinDataStreamer.WriteDataset(s, ds, [woRows, woSchema], -1); BinDataStreamer.ReadDataset(s, dtReport, TRUE, '', TRUE, TRUE); Report.DeviceType := 'dtArchive'; Report.ArchiveFileName := ReportBuilder_ServerMainForm.AppPath + 'ServerArchive.raf'; Report.Print; result.LoadFromFile(ReportBuilder_ServerMainForm.AppPath + 'ServerArchive.raf'); finally s.Free; end; end; procedure TDARBService.DataAbstractServiceActivate(const aClientID: TGUID; aSession: TROSession; const aMessage: IROMessage); begin fConnection := ReportBuilder_ServerMainForm.DAConnectionManager1.NewConnection('ADO', TRUE); end; procedure TDARBService.DataAbstractServiceDeactivate( const aClientID: TGUID; aSession: TROSession); begin fConnection := nil; end; initialization TROClassFactory.Create('DARBService', Create_DARBService, TDARBService_Invoker); finalization end.