Hola a todos,
estoy escribiendo mi primera UDF en Delphi para calcular la edad de una persona y la muestre en una vista. La función tiene el siguiente código fuente:
Código Delphi
[-]
uses
Windows, Messages, SysUtils, Controls;
type
ISC_QUAD = record
isc_quad_high : Integer ; isc_quad_low : Cardinal ; end;
PISC_QUAD = ^ISC_QUAD;
function CalculaEdad(var IBDate: PISC_QUAD): Integer; stdcall;
implementation
function CalculaEdad(var IBDate: PISC_QUAD): Integer;
var
iTemp,iTemp2,Nada:word;
Fecha: TDate;
begin
Fecha := IBDate^.isc_quad_high;
if Fecha = 0 then Result := 0
else
begin
DecodeDate(Date,itemp,Nada,Nada);
DecodeDate(Fecha,itemp2,Nada,Nada);
if FormatDateTime('mmdd',Date) <
FormatDateTime('mmdd',Fecha) then Result:=iTemp-iTemp2-1
else Result:=iTemp-iTemp2;
end;
end;
end.
Para importarla a FIREBIRD, utilizo el siguiente script:
Código SQL
[-]
DECLARE EXTERNAL FUNCTION GETEDAD
TIMESTAMP
RETURNS INTEGER BY VALUE
ENTRY_POINT 'CalculaEdad' MODULE_NAME 'MiUDF'
Y la Vista es algo como
Código SQL
[-]
SELECT GETEDAD(F_NACIMIENTO) AS EDAD FROM PERSONAS
El Caso es que, probandolo en el IBExpert, retorna siempre éste error:
Error Message:
----------------------------------------
Unsuccessful execution caused by a system error that precludes
successful execution of subsequent statements.
Error writing data to the connection.
Ya no sé que variaciones realizar, he intentado varias formas y no hay manera.
Os agradecería vuestras sugerencias al respecto, ¿qué hago mla? Gracias