Ver Mensaje Individual
  #17  
Antiguo 10-08-2011
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Reputación: 24
guillotmarc Va por buen camino
Hola.

Cita:
Empezado por amerika111 Ver Mensaje
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;    /* No existe ningún espacio en blanco en NOMBRES */
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita