repaso final de todos lo datos

git-svn-id: https://192.168.0.254/svn/Proyectos.LuisLeon_FactuGES2/trunk@27 b2cfbe5a-eba1-4a0c-8b32-7feea0a119f2
This commit is contained in:
roberto 2010-08-19 19:06:10 +00:00
parent f35e44d301
commit a17074b5e2
6 changed files with 203 additions and 91 deletions

View File

@ -13,7 +13,7 @@ uses
TB2Toolbar, TBXDkPanels, TB2Dock, uViewFiltroBase, cxGridLevel, TB2Toolbar, TBXDkPanels, TB2Dock, uViewFiltroBase, cxGridLevel,
cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses, cxGridCustomTableView, cxGridTableView, cxGridDBTableView, cxClasses,
cxControls, cxGridCustomView, cxGrid, cxTextEdit, cxControls, cxGridCustomView, cxGrid, cxTextEdit,
uDAInterfaces; uDAInterfaces, uCustomView, uViewBase;
type type
IViewAlbaranesDevProveedor = interface(IViewAlbaranesProveedor) IViewAlbaranesDevProveedor = interface(IViewAlbaranesProveedor)

View File

@ -12,7 +12,7 @@ uses
uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, Classes, uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, Classes,
cxGrid, uBizAlbaranesProveedor, cxCurrencyEdit, Forms, uViewFiltroBase, cxGrid, uBizAlbaranesProveedor, cxCurrencyEdit, Forms, uViewFiltroBase,
ActnList, TB2Item, TBX, TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, cxTextEdit, ActnList, TB2Item, TBX, TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, cxTextEdit,
uDAInterfaces; uDAInterfaces, uCustomView, uViewBase;
type type
IViewAlbaranesProveedor = interface(IViewGrid) IViewAlbaranesProveedor = interface(IViewGrid)
@ -64,6 +64,12 @@ type
procedure cxGridViewDataControllerCompare( procedure cxGridViewDataControllerCompare(
ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2, ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer); AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
procedure cxGridViewNUM_COPIASCustomDrawHeader(Sender: TcxGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo;
var ADone: Boolean);
procedure cxGridViewNUM_CORREOSCustomDrawHeader(Sender: TcxGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo;
var ADone: Boolean);
private private
//Filtros relativos a la vista //Filtros relativos a la vista
@ -196,6 +202,48 @@ begin
end; end;
end; end;
procedure TfrViewAlbaranesProveedor.cxGridViewNUM_COPIASCustomDrawHeader(
Sender: TcxGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
var
R : TRect;
begin
inherited;
with AViewInfo do
begin
LookAndFeelPainter.DrawHeader(ACanvas, Bounds, TextAreaBounds, Neighbors,
Borders, ButtonState, AlignmentHorz, AlignmentVert, MultiLine,
False, '', Params.Font, Params.TextColor, Params.Color);
R := AViewInfo.ContentBounds;
ACanvas.FillRect(R);
ACanvas.DrawImage(GridPNGImageList, R.Left + 2, R.Top, 2);
end;
ADone := True;
end;
procedure TfrViewAlbaranesProveedor.cxGridViewNUM_CORREOSCustomDrawHeader(
Sender: TcxGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
var
R : TRect;
begin
inherited;
with AViewInfo do
begin
LookAndFeelPainter.DrawHeader(ACanvas, Bounds, TextAreaBounds, Neighbors,
Borders, ButtonState, AlignmentHorz, AlignmentVert, MultiLine,
False, '', Params.Font, Params.TextColor, Params.Color);
R := AViewInfo.ContentBounds;
ACanvas.FillRect(R);
ACanvas.DrawImage(GridPNGImageList, R.Left + 2, R.Top, 3);
end;
ADone := True;
end;
procedure TfrViewAlbaranesProveedor.cxGridViewStylesGetContentStyle(Sender: procedure TfrViewAlbaranesProveedor.cxGridViewStylesGetContentStyle(Sender:
TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem:
TcxCustomGridTableItem; out AStyle: TcxStyle); TcxCustomGridTableItem; out AStyle: TcxStyle);

View File

@ -13,7 +13,8 @@ uses
cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid, cxGridLevel, cxClasses, cxControls, cxGridCustomView, cxGrid,
cxImage, Grids, DBGrids, uBizFacturasProveedor, cxGridCustomPopupMenu, cxImage, Grids, DBGrids, uBizFacturasProveedor, cxGridCustomPopupMenu,
cxGridPopupMenu, cxCalendar, cxCurrencyEdit, uViewFiltroBase, TB2Item, TBX, cxGridPopupMenu, cxCalendar, cxCurrencyEdit, uViewFiltroBase, TB2Item, TBX,
TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, uDAInterfaces; TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, uDAInterfaces, uCustomView,
uViewBase;
type type
IViewFacturasProveedor = interface(IViewGrid) IViewFacturasProveedor = interface(IViewGrid)
@ -67,6 +68,12 @@ type
procedure cxGridViewDataControllerCompare( procedure cxGridViewDataControllerCompare(
ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2, ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer); AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
procedure cxGridViewNUM_COPIASCustomDrawHeader(Sender: TcxGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo;
var ADone: Boolean);
procedure cxGridViewNUM_CORREOSCustomDrawHeader(Sender: TcxGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo;
var ADone: Boolean);
private private
//Filtros relativos a la vista //Filtros relativos a la vista
@ -201,6 +208,48 @@ begin
Compare := VarCompare(V1, V2); Compare := VarCompare(V1, V2);
end; end;
procedure TfrViewFacturasProveedor.cxGridViewNUM_COPIASCustomDrawHeader(
Sender: TcxGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
var
R : TRect;
begin
inherited;
with AViewInfo do
begin
LookAndFeelPainter.DrawHeader(ACanvas, Bounds, TextAreaBounds, Neighbors,
Borders, ButtonState, AlignmentHorz, AlignmentVert, MultiLine,
False, '', Params.Font, Params.TextColor, Params.Color);
R := AViewInfo.ContentBounds;
ACanvas.FillRect(R);
ACanvas.DrawImage(GridPNGImageList, R.Left + 2, R.Top, 2);
end;
ADone := True;
end;
procedure TfrViewFacturasProveedor.cxGridViewNUM_CORREOSCustomDrawHeader(
Sender: TcxGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
var
R : TRect;
begin
inherited;
with AViewInfo do
begin
LookAndFeelPainter.DrawHeader(ACanvas, Bounds, TextAreaBounds, Neighbors,
Borders, ButtonState, AlignmentHorz, AlignmentVert, MultiLine,
False, '', Params.Font, Params.TextColor, Params.Color);
R := AViewInfo.ContentBounds;
ACanvas.FillRect(R);
ACanvas.DrawImage(GridPNGImageList, R.Left + 2, R.Top, 3);
end;
ADone := True;
end;
procedure TfrViewFacturasProveedor.cxGridViewStylesGetContentStyle( procedure TfrViewFacturasProveedor.cxGridViewStylesGetContentStyle(
Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
AItem: TcxCustomGridTableItem; out AStyle: TcxStyle); AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);

View File

@ -12,7 +12,7 @@ uses
uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, Classes, uDADataTable, cxGridLevel, cxClasses, cxControls, cxGridCustomView, Classes,
cxGrid, uBizPedidosProveedor, cxCurrencyEdit, Forms, uViewFiltroBase, ActnList, cxGrid, uBizPedidosProveedor, cxCurrencyEdit, Forms, uViewFiltroBase, ActnList,
TB2Item, TBX, TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, uDAInterfaces, TB2Item, TBX, TB2Toolbar, TBXDkPanels, TB2Dock, dxPgsDlg, uDAInterfaces,
uCustomView, uViewBase; uCustomView, uViewBase, cxTextEdit;
type type
IViewPedidosProveedor = interface(IViewGrid) IViewPedidosProveedor = interface(IViewGrid)
@ -73,6 +73,12 @@ type
procedure cxGridViewDataControllerCompare( procedure cxGridViewDataControllerCompare(
ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2, ADataController: TcxCustomDataController; ARecordIndex1, ARecordIndex2,
AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer); AItemIndex: Integer; const V1, V2: Variant; var Compare: Integer);
procedure cxGridViewNUM_COPIASCustomDrawHeader(Sender: TcxGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo;
var ADone: Boolean);
procedure cxGridViewNUM_CORREOSCustomDrawHeader(Sender: TcxGridTableView;
ACanvas: TcxCanvas; AViewInfo: TcxGridColumnHeaderViewInfo;
var ADone: Boolean);
private private
//Filtros relativos a la vista //Filtros relativos a la vista
@ -217,6 +223,48 @@ begin
end; end;
end; end;
procedure TfrViewPedidosProveedor.cxGridViewNUM_COPIASCustomDrawHeader(
Sender: TcxGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
var
R : TRect;
begin
inherited;
with AViewInfo do
begin
LookAndFeelPainter.DrawHeader(ACanvas, Bounds, TextAreaBounds, Neighbors,
Borders, ButtonState, AlignmentHorz, AlignmentVert, MultiLine,
False, '', Params.Font, Params.TextColor, Params.Color);
R := AViewInfo.ContentBounds;
ACanvas.FillRect(R);
ACanvas.DrawImage(GridPNGImageList, R.Left + 2, R.Top, 3);
end;
ADone := True;
end;
procedure TfrViewPedidosProveedor.cxGridViewNUM_CORREOSCustomDrawHeader(
Sender: TcxGridTableView; ACanvas: TcxCanvas;
AViewInfo: TcxGridColumnHeaderViewInfo; var ADone: Boolean);
var
R : TRect;
begin
inherited;
with AViewInfo do
begin
LookAndFeelPainter.DrawHeader(ACanvas, Bounds, TextAreaBounds, Neighbors,
Borders, ButtonState, AlignmentHorz, AlignmentVert, MultiLine,
False, '', Params.Font, Params.TextColor, Params.Color);
R := AViewInfo.ContentBounds;
ACanvas.FillRect(R);
ACanvas.DrawImage(GridPNGImageList, R.Left + 2, R.Top, 4);
end;
ADone := True;
end;
procedure TfrViewPedidosProveedor.cxGridViewStylesGetContentStyle(Sender: procedure TfrViewPedidosProveedor.cxGridViewStylesGetContentStyle(Sender:
TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem: TcxCustomGridTableView; ARecord: TcxCustomGridRecord; AItem:
TcxCustomGridTableItem; out AStyle: TcxStyle); TcxCustomGridTableItem; out AStyle: TcxStyle);

View File

@ -5,17 +5,17 @@ interface
uses uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, frxClass, frxDBSet, uDAScriptingProvider, Dialogs, frxClass, frxDBSet, uDAScriptingProvider,
uDADataTable, uDACDSDataTable, DB, uDAClasses, frxChart, frxGradient, uDADataTable, uDAMemDataTable, DB, uDAClasses, frxChart, frxGradient,
frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uDABINAdapter, uROTypes, frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uROTypes,
uDAInterfaces, uDADataStreamer; uDAInterfaces, uDADataStreamer, FactuGES_Intf, uDABin2DataStreamer;
type type
TRptRemesasCliente = class(TDataModule) TRptRemesasCliente = class(TDataModule)
DADataCabecera: TDADataSource; DADataCabecera: TDADataSource;
DADataDetalles: TDADataSource; DADataDetalles: TDADataSource;
tbl_Cabecera: TDACDSDataTable; tbl_Cabecera: TDAMemDataTable;
tbl_Detalles: TDACDSDataTable; tbl_Detalles: TDAMemDataTable;
DABINAdapter: TDABINAdapter;
frxRichObject1: TfrxRichObject; frxRichObject1: TfrxRichObject;
frxBarCodeObject1: TfrxBarCodeObject; frxBarCodeObject1: TfrxBarCodeObject;
frxOLEObject1: TfrxOLEObject; frxOLEObject1: TfrxOLEObject;
@ -28,13 +28,14 @@ type
frxReport: TfrxReport; frxReport: TfrxReport;
schReport: TDASchema; schReport: TDASchema;
DataDictionary: TDADataDictionary; DataDictionary: TDADataDictionary;
Bin2DataStreamer: TDABin2DataStreamer;
procedure DataModuleCreate(Sender: TObject); procedure DataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject); procedure DataModuleDestroy(Sender: TObject);
private private
FConnection: IDAConnection; FConnection: IDAConnection;
procedure GenerarRemesa(const ID : Integer); overload; procedure _GenerarRemesa(const ID : Integer); overload;
public public
function GenerarRemesa(const ID : String): Binary; overload; function GenerarRemesa(const ListaID : TIntegerArray): Binary;
end; end;
implementation implementation
@ -42,7 +43,7 @@ implementation
{$R *.dfm} {$R *.dfm}
uses uses
uDataModuleServer; uDataModuleServer, uSistemaFunc;
const const
rptInforme = 'InfRemesaCliente.fr3'; rptInforme = 'InfRemesaCliente.fr3';
@ -64,31 +65,21 @@ begin
frxDBCabecera.DataSource := DADataCabecera; frxDBCabecera.DataSource := DADataCabecera;
frxDBCabecera.CloseDataSource := False; frxDBCabecera.CloseDataSource := False;
frxDBCompensados.DataSource := DADataCompensados; frxDBDetalles.DataSource := DADataDetalles;
frxDBCompensados.CloseDataSource := False; frxDBDetalles.CloseDataSource := False;
end; end;
function TRptRemesasCliente.GenerarRemesa(const ID: String): Binary; function TRptRemesasCliente.GenerarRemesa(const ListaID : TIntegerArray): Binary;
var var
ID_Remesas: TStringList;
i: Integer; i: Integer;
begin begin
Result := Binary.Create; Result := Binary.Create;
FConnection.BeginTransaction;
try try
ID_Remesas := TStringList.Create;
ID_Remesas.CommaText := ID;
//Vamos generando todos y cada uno de los albaranes recibidos //Vamos generando todos y cada uno de los albaranes recibidos
for i := 0 to ID_Remesas.Count - 1 do for i := 0 to ListaID.Count - 1 do
GenerarRemesa(StrToInt(ID_Remesas.Strings[i])); _GenerarRemesa(ListaID.Items[i]);
frxReport.PreviewPages.SaveToStream(Result); frxReport.PreviewPages.SaveToStream(Result);
finally finally
FConnection.RollbackTransaction;
end; end;
end; end;
@ -98,38 +89,30 @@ begin
tbl_Detalles.Active := False; tbl_Detalles.Active := False;
end; end;
procedure TRptRemesasCliente.GenerarRemesa(const ID: Integer); procedure TRptRemesasCliente._GenerarRemesa(const ID: Integer);
var var
AStream: TMemoryStream;
dsMaster: IDADataset;
dsDetail: IDADataset;
AInforme: Variant; AInforme: Variant;
begin begin
AStream := TMemoryStream.Create; FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
try try
dsMaster := schReport.NewDataset(FConnection, ds_InformeCabecera, ['ID'], [ID]); tbl_Cabecera.Active := False;
dsDetail := schReport.NewDataset(FConnection, ds_InformeDetalles, ['ID_REMESA'], [ID], False); tbl_Detalles.Active := False;
AStream.Clear; tbl_Cabecera.ParamByName('ID').AsInteger := ID;
DABINAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); tbl_Detalles.ParamByName('ID_REMESA').AsInteger := ID;
DABINAdapter.ReadDataset(AStream, tbl_Cabecera, TRUE, '', TRUE, TRUE);
AStream.Clear; tbl_Cabecera.Active := True;
DABINAdapter.WriteDataset(AStream, dsDetail, [woRows, woSchema], -1); tbl_Detalles.Active := True;
DABINAdapter.ReadDataset(AStream, tbl_Detalles, TRUE, '', TRUE, TRUE);
AInforme := DarRutaFichero(DarRutaInformes, rptInforme); AInforme := DarRutaFichero(DarRutaInformes, rptInforme, tbl_Cabecera.FieldByName('ID_EMPRESA').AsString);
if VarIsNull(AInforme) then if VarIsNull(AInforme) then
raise Exception.Create (('Error Servidor: GenerarRemesa, no encuentra informe ' + rptInforme)); raise Exception.Create (('Error Servidor: _GenerarRemesa, no encuentra informe ' + rptInforme));
frxReport.LoadFromFile(AInforme, True); frxReport.LoadFromFile(AInforme, True);
frxReport.PrepareReport(False); frxReport.PrepareReport(False);
finally finally
AStream.Free; FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
dsMaster := Nil;
dsDetail := Nil;
end; end;
end; end;

View File

@ -7,15 +7,15 @@ uses
Dialogs, frxClass, frxDBSet, uDAScriptingProvider, Dialogs, frxClass, frxDBSet, uDAScriptingProvider,
uDADataTable, uDACDSDataTable, DB, uDAClasses, frxChart, frxGradient, uDADataTable, uDACDSDataTable, DB, uDAClasses, frxChart, frxGradient,
frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uDABINAdapter, uROTypes, frxChBox, frxCross, frxOLE, frxBarcode, frxRich, uDABINAdapter, uROTypes,
uDAInterfaces, uDADataStreamer; uDAInterfaces, uDADataStreamer, FactuGES_Intf, uDABin2DataStreamer,
uDAMemDataTable;
type type
TRptRemesasProveedor = class(TDataModule) TRptRemesasProveedor = class(TDataModule)
DADataCabecera: TDADataSource; DADataCabecera: TDADataSource;
DADataDetalles: TDADataSource; DADataDetalles: TDADataSource;
tbl_Cabecera: TDACDSDataTable; tbl_Cabecera: TDAMemDataTable;
tbl_Detalles: TDACDSDataTable; tbl_Detalles: TDAMemDataTable;
DABINAdapter: TDABINAdapter;
frxRichObject1: TfrxRichObject; frxRichObject1: TfrxRichObject;
frxBarCodeObject1: TfrxBarCodeObject; frxBarCodeObject1: TfrxBarCodeObject;
frxOLEObject1: TfrxOLEObject; frxOLEObject1: TfrxOLEObject;
@ -25,16 +25,17 @@ type
frxChartObject1: TfrxChartObject; frxChartObject1: TfrxChartObject;
frxDBCabecera: TfrxDBDataset; frxDBCabecera: TfrxDBDataset;
frxDBDetalles: TfrxDBDataset; frxDBDetalles: TfrxDBDataset;
frxReport: TfrxReport;
Bin2DataStreamer: TDABin2DataStreamer;
schReport: TDASchema; schReport: TDASchema;
DataDictionary: TDADataDictionary; DataDictionary: TDADataDictionary;
frxReport: TfrxReport;
procedure DataModuleCreate(Sender: TObject); procedure DataModuleCreate(Sender: TObject);
procedure DataModuleDestroy(Sender: TObject); procedure DataModuleDestroy(Sender: TObject);
private private
FConnection: IDAConnection; FConnection: IDAConnection;
procedure GenerarRemesa(const ID : Integer); overload; procedure _GenerarRemesa(const ID : Integer); overload;
public public
function GenerarRemesa(const ID : String): Binary; overload; function GenerarRemesa(const ListaID : TIntegerArray): Binary; overload;
end; end;
implementation implementation
@ -42,7 +43,7 @@ implementation
{$R *.dfm} {$R *.dfm}
uses uses
uDataModuleServer; uDataModuleServer, uSistemaFunc;
const const
rptInforme = 'InfRemesaProveedor.fr3'; rptInforme = 'InfRemesaProveedor.fr3';
@ -64,31 +65,21 @@ begin
frxDBCabecera.DataSource := DADataCabecera; frxDBCabecera.DataSource := DADataCabecera;
frxDBCabecera.CloseDataSource := False; frxDBCabecera.CloseDataSource := False;
frxDBCompensados.DataSource := DADataCompensados; frxDBDetalles.DataSource := DADataDetalles;
frxDBCompensados.CloseDataSource := False; frxDBDetalles.CloseDataSource := False;
end; end;
function TRptRemesasProveedor.GenerarRemesa(const ID: String): Binary; function TRptRemesasProveedor.GenerarRemesa(const ListaID : TIntegerArray): Binary;
var var
ID_Remesas: TStringList;
i: Integer; i: Integer;
begin begin
Result := Binary.Create; Result := Binary.Create;
FConnection.BeginTransaction;
try try
ID_Remesas := TStringList.Create;
ID_Remesas.CommaText := ID;
//Vamos generando todos y cada uno de los albaranes recibidos //Vamos generando todos y cada uno de los albaranes recibidos
for i := 0 to ID_Remesas.Count - 1 do for i := 0 to ListaID.Count - 1 do
GenerarRemesa(StrToInt(ID_Remesas.Strings[i])); _GenerarRemesa(ListaID.Items[i]);
frxReport.PreviewPages.SaveToStream(Result); frxReport.PreviewPages.SaveToStream(Result);
finally finally
FConnection.RollbackTransaction;
end; end;
end; end;
@ -98,39 +89,32 @@ begin
tbl_Detalles.Active := False; tbl_Detalles.Active := False;
end; end;
procedure TRptRemesasProveedor.GenerarRemesa(const ID: Integer); procedure TRptRemesasProveedor._GenerarRemesa(const ID: Integer);
var var
AStream: TMemoryStream;
dsMaster: IDADataset;
dsDetail: IDADataset;
AInforme: Variant; AInforme: Variant;
begin begin
AStream := TMemoryStream.Create; FConnection.BeginTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
try try
dsMaster := schReport.NewDataset(FConnection, ds_InformeCabecera, ['ID'], [ID]); tbl_Cabecera.Active := False;
dsDetail := schReport.NewDataset(FConnection, ds_InformeDetalles, ['ID_REMESA'], [ID], False); tbl_Detalles.Active := False;
AStream.Clear; tbl_Cabecera.ParamByName('ID').AsInteger := ID;
DABINAdapter.WriteDataset(AStream, dsMaster, [woRows, woSchema], -1); tbl_Detalles.ParamByName('ID_REMESA').AsInteger := ID;
DABINAdapter.ReadDataset(AStream, tbl_Cabecera, TRUE, '', TRUE, TRUE);
AStream.Clear; tbl_Cabecera.Active := True;
DABINAdapter.WriteDataset(AStream, dsDetail, [woRows, woSchema], -1); tbl_Detalles.Active := True;
DABINAdapter.ReadDataset(AStream, tbl_Detalles, TRUE, '', TRUE, TRUE);
AInforme := DarRutaFichero(DarRutaInformes, rptInforme); AInforme := DarRutaFichero(DarRutaInformes, rptInforme, tbl_Cabecera.FieldByName('ID_EMPRESA').AsString);
if VarIsNull(AInforme) then if VarIsNull(AInforme) then
raise Exception.Create (('Error Servidor: GenerarRemesa, no encuentra informe ' + rptInforme)); raise Exception.Create (('Error Servidor: _GenerarRemesa, no encuentra informe ' + rptInforme));
frxReport.LoadFromFile(AInforme, True); frxReport.LoadFromFile(AInforme, True);
frxReport.PrepareReport(False); frxReport.PrepareReport(False);
finally finally
AStream.Free; FConnection.RollbackTransaction; //<--- Creo que no va a hacer falta. "PUES SI ES NECESARIO"
dsMaster := Nil;
dsDetail := Nil;
end; end;
end; end;
end. end.