Totalmente de acuerdo con tu comentario y asi lo hago lo que pasa es que la factura la divido en (n) partes por cuestiones de formato de la factura del cliente pero bueno ya esta solucionado el problema
asi que ahi le va la explicacion para los posibles amigos con esta misma inquietud
1.- definimos una unidad en nuestya aplicacion que llamaremos uFastReportFunctions (Es el mismo ejemplo de una funcion creada en una pagina )
copiamos esta funcion completa
Código Delphi
[-]
unit uFastReportFunctions;
interface
uses
Windows, Classes, SysUtils, FR_Class, FR_Const, FR_Utils;
type
TReportFunctionLibrary = class(TfrFunctionLibrary)
private
function RoundD(x: Extended; d: Integer): Double;
public
constructor Create; override;
procedure DoFunction(FNo: Integer; p1, p2, p3: Variant;
var val: Variant); override;
end;
implementation
uses
DB, DBClient, Variants, StrUtils, Math;
constructor TReportFunctionLibrary.Create;
begin
inherited;
inherited Create;
with List do
begin
Add('roundd');
end;
AddFunctionDesc('Roundd', 'MisFunciones', 'FR_ROUNDD(,)/Redondear valores (Devolviendo 1)');
end;
procedure TReportFunctionLibrary.DoFunction(FNo: Integer; p1, p2,
p3: Variant; var val: Variant);
begin
inherited;
val := RoundD(frParser.Calc(p1),frParser.Calc(p2));
end;
function TReportFunctionLibrary.RoundD(x: Extended; d: Integer): Double;
var
n: Extended;
begin
n := Power(10, d);
x := x * n;
Result := (Int(x) + Int(Frac(x) * 2)) / n;
end;
initialization
frRegisterFunctionLibrary(TReportFunctionLibrary);
finalization
frUnRegisterFunctionLibrary(TReportFunctionLibrary);
end.
Segundo en tiempo de ejecucion no en desarrollo (al momento de dar click para ver el informe activamos el disenador frReport1.DesignReport; utilizamos la funcion que le hemos puesto mis funciones , la usamos asi
Cust:=roundd([([roundd([Sum([Imp_partes."TOTAL_LINEA"])],2)]*12/100)],2);
y listo , ya podremos declarar las funciones que queramos gracias a su apoyo