Ver Mensaje Individual
  #1  
Antiguo 11-02-2007
Avatar de morta71
morta71 morta71 is offline
Miembro
 
Registrado: may 2006
Ubicación: Girona - España
Posts: 30
Reputación: 0
morta71 Va por buen camino
Error UDF realizada en Delphi

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
   {InterBase Date/Time Record}
   ISC_QUAD = record
      isc_quad_high : Integer ;  // Date
      isc_quad_low  : Cardinal ; // Time
      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
Responder Con Cita