Hola.
Cita:
Empezado por amerika111
y encuanto a la udf sobre calcular el rfc... vi que comentaste algo sobre esto
yo la he probado pero no me funciona no se si tenga que realizar un paso o algo asi para que funcione, este es el dll de la funcion
DECLARE EXTERNAL FUNCTION GENRFC
CSTRING(30),
CSTRING(30),
CSTRING(30),
DATE
RETURNS CSTRING(15)
ENTRY_POINT 'GeneraRFC' MODULE_NAME 'Project1.dll';
y la libreria es project1.dll
esa la coloque en la carpeta de firebird
de udf..
|
En realidad no he comentado el que definas tu GENRFC en una UDF, sino que en el caso de que no quieras utilizar Firebird 2.1 o 2.5 (que son las que tienen la nueva función POSITION que en cierta manera equivale al PATINDEX de SQL Server), entonces deberás buscar esa función Pos() de alguna DLL (pero las UDF's que incorpora Firebird de serie, no incorporan dicha función). Aunque personalmente te recomiendo lo que ya también te comenté de que simplemente sustituyas el PATINDEX por un bucle para localizar la posición de la cadena en blanco.
Ejplo.
Esta sentencia :
NOMBRE1_LONGITUD = position(' ', NOMBRES);
Equivale a este bucle :
Código SQL
[-]
NOMBRE1_LONGITUD = 1;
while substring(NOMBRES from :NOMBRE1_LONGITUD for 1) not in (' ', '') do begin
NOMBRE1_LONGITUD = NOMBRE1_LONGITUD + 1;
end
if (substring(NOMBRES from :NOMBRE1_LONGITUD for 1) = '') then begin
NOMBRE1_LONGITUD = 0;
end
Finalmente, respecto a generar toda la función RFC en Delphi y utilizarla en Firebird mediante una UDF, te dejo un ejemplo de como hacer la DLL en Delphi para que pueda ser utilizada en Firebird.
http://www.firebirdfaq.org/faq83/
Traducción automática de Google
Saludos.