Foros Club Delphi

Foros Club Delphi (http://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (http://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Utilizar FreeAdHocUDF con Firebird 3.0 (http://www.clubdelphi.com/foros/showthread.php?t=92594)

yaguane 06-12-2017 00:16:24

Utilizar FreeAdHocUDF con Firebird 3.0
 
Amigos del Foro
Tengo problemas al ejecutar FreeAdHocUDF en Firebird 3.0.
Estoy usando Firebird 1.5 y tengo que migrar a la version 3.0, pero tengo muchas valiosas funciones que a pesar que se instala correctamente, no las puedo ejecutar, copio las DLL en {Install}\UDF , en firebird.conf "UdfAccess = Restrict C:\Firebird_3_0\UDF"
al llamar la función devuelve el siguiente error :
"Invalid token.
invalid request BLR at offset 56.
function F_YEARSBETWEEN is not defined.
module name or entrypoint could not be found."
Version Firebird: WI-V6.3.2.32703 Firebird 3.0
Windows Seven Enterprise 64 Bits
IBexpert 2012.02.21
Si a alguno le paso me gustaría saber. Gracias!

Casimiro Notevi 06-12-2017 01:56:03

Pregunto, ¿para qué las necesitas?

yaguane 06-12-2017 20:58:47

Gracias por responder moderador, básicamente son algunas de operaciones con fechas, abajo pego las que necesito.
F_AGEINMONTHS
F_DAYOFWEEK
F_YEAR
F_YEAROFYEAR
F_YEARSBETWEEN
Nuevamente muchas gracias por tomarte el trabajo de contestar este tema que seguro es muy simple de resolver.

Casimiro Notevi 06-12-2017 22:30:52

Creo que todas esas están incluidas de forma predeterminada en firebird. Puede que tengan un nombre igual o similar, pero están. No necesitas freeadhocudf.

yaguane 06-12-2017 23:17:11

Muchas gracias compañero, buscare en la doc. de fb lo que me dices.

maeyanes 06-12-2017 23:36:01

Hola...

Como bien indica Casimiro Notevi, desde Firebird 1.5 hay algunas funciones que se pueden realizar directamente desde el motor, sin necesidad de DLL externas. A continuación el como se podrían traducir las funciones que requieres usando lo que proporciona Firebird 3.0:

Código SQL [-]
F_AGEINMONTHS: DATEDIFF(MONTH, DATE '01/01/20187', DATE '01/03/2017')

F_DAYOFWEEK: select EXTRACT(WEEKDAY from DATE '01/08/2017')

F_YEAR: select EXTRACT(YEAR from DATE '01/01/2017')

F_YEAROFYEAR: /* El manual de FreeAdHocUDF indica que no se use esta función */

F_YEARSBETWEEN: DATEDIFF(YEAR, DATE '01/01/2015', DATE '01/03/2017')

Ahora, parece ser que Firebird 3.0 tiene problemas con los UDF externos: Problem to use FreeAdHocUDF the firebird 3.


Saludos...


La franja horaria es GMT +2. Ahora son las 07:27:47.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi