Componentes.Terceros.RemObj.../official/5.0.23.613/Data Abstract for Delphi/Samples/Report Builder/DARBService_Impl.pas

101 lines
3.3 KiB
ObjectPascal

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.