git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@2 b6239004-a887-0f4b-9937-50029ccdca16
101 lines
3.3 KiB
ObjectPascal
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.
|
|
|