Tecsitel_FactuGES2/Source/Modulos/Contactos/Reports/uRptFichasEmpleado_Server.pas
david e7e45f1323 - #12 -> Enviar documentos por correo electrónico. Adaptación de los módulos (sin terminar)
- En los controladores, cambiar TObservador por TControllerBase
- Limpieza de código y warnings.


git-svn-id: https://192.168.0.254/svn/Proyectos.Tecsitel_FactuGES2/trunk@528 0c75b7a4-871f-7646-8a2f-f78d34cc349f
2008-08-22 14:52:35 +00:00

104 lines
2.9 KiB
ObjectPascal

unit uRptFichasEmpleado_Server;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, frxClass, frxDBSet, uDAScriptingProvider,
uDADataTable, uDACDSDataTable, DB, uDAClasses, frxChart, frxGradient,
frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uDABINAdapter, uROTypes,
uDAInterfaces, uDADataStreamer, uDABin2DataStreamer, uDAMemDataTable,
FactuGES_Intf;
type
TRptFichasEmpleado = class(TDataModule)
DADataCabecera: TDADataSource;
tbl_FichaEmpleado: TDAMemDataTable;
frxRichObject1: TfrxRichObject;
frxBarCodeObject1: TfrxBarCodeObject;
frxOLEObject1: TfrxOLEObject;
frxCrossObject1: TfrxCrossObject;
frxCheckBoxObject1: TfrxCheckBoxObject;
frxGradientObject1: TfrxGradientObject;
frxChartObject1: TfrxChartObject;
frxDBCabecera: TfrxDBDataset;
schReport: TDASchema;
DataDictionary: TDADataDictionary;
frxReport: TfrxReport;
Bin2DataStreamer: TDABin2DataStreamer;
procedure DataModuleCreate(Sender: TObject);
private
FConnection: IDAConnection;
//Genera cada uno de los albaranes a imprimir
procedure _GenerarFicha(const ID: Integer);
public
function GenerarFicha(const ListaID: TIntegerArray): Binary;
end;
implementation
{$R *.dfm}
uses
uDataModuleServer, schContactosClient_Intf;
const
rptFichaEmpleado = 'InfFichaEmpleado.fr3';
{ Dataset names for schReport }
ds_InformeFichaEmpleado = 'InformeFichasEmpleado';
{ TRptFichaEmpleado }
procedure TRptFichasEmpleado.DataModuleCreate(Sender: TObject);
begin
schReport.ConnectionManager := dmServer.ConnectionManager;
FConnection := dmServer.DarNuevaConexion;
frxReport.EngineOptions.NewSilentMode := simReThrow;
end;
function TRptFichasEmpleado.GenerarFicha(const ListaID: TIntegerArray): Binary;
var
i: Integer;
begin
Result := Binary.Create;
//FConnection.BeginTransaction; <--- Creo que no va a hacer falta.
try
//Vamos generando todos y cada uno de las fichas de empleado
for i := 0 to ListaID.Count - 1 do
_GenerarFicha(ListaID.Items[i]);
frxReport.PreviewPages.SaveToStream(Result);
finally
//FConnection.RollbackTransaction; <--- Creo que no va a hacer falta.
end;
end;
procedure TRptFichasEmpleado._GenerarFicha(const ID: Integer);
var
AStream: TMemoryStream;
dsMaster: IDADataset;
begin
AStream := TMemoryStream.Create;
try
dsMaster := schReport.NewDataset(FConnection, ds_InformeFichaEmpleado, ['ID'], [ID]);
AStream.Clear;
Bin2DataStreamer.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1);
Bin2DataStreamer.ReadDataset(AStream, tbl_FichaEmpleado, TRUE, '', TRUE, TRUE);
frxReport.LoadFromFile(DarRutaInformes + rptFichaEmpleado, True);
frxReport.PrepareReport(False);
finally
AStream.Free;
dsMaster := Nil;
end;
end;
end.