Page 1 of 1

error CallHBFunc()

Posted: Tue Dec 22, 2015 9:11 pm
by datato
Hola a todos, utilizo en un informe desde hace tiempo la función CallHBFunc() de la siguiente manera dentro de un campo de texto

[CallHBFunc('verpago',[<CABFACTU."CODPAGO">])]

La función que llamo verpago() es la siguiente

FUNCTION Verpago(nCodigo)
LOCAL cRet

SET DELETED Off

dbselectarea('formapag')
ordsetfocus('codpago')
dbgotop()

if formapag->(dbseek(strzero(ncodigo,2)))
cRet:= formapag->textopago
endif

SET DELETED ON

dbselectarea("cabfactu")
RETURN(cRet)

Hasta ahora me funcionaba bien, hasta que he actualizado FastReport con la ultima actualización del 1 de Diciembre 2015

Ahora no me funciona y en dicho campo se imprime lo siguiente:

[VERPAGO]: error de argumento

Alguien puede ayudarme.

Muchas gracias a todos por vuestro tiempo.

Re: error CallHBFunc()

Posted: Tue Dec 22, 2015 11:32 pm
by Ariel69
Hola,
proba de definir :

Local cRet:= ""

Saludos.

Re: error CallHBFunc()

Posted: Wed Dec 23, 2015 5:51 am
by datato
Gracias por tu respuesta. No funciona.

Re: error CallHBFunc()

Posted: Wed Dec 23, 2015 8:21 am
by bingen
Quita las comillas dobles

[CallHBFunc('verpago',[<CABFACTU."CODPAGO">])]

y pon simples

[CallHBFunc('verpago',[<CABFACTU.'CODPAGO'>])]

creo que es eso.

Salu2.

Re: error CallHBFunc()

Posted: Wed Dec 23, 2015 4:50 pm
by datato
Gracias por contestar Bingen, pero no es eso.

Ya lo he cambiado y da otro error distinto.

Este es el mensaje del error.

Ha ocurrido el siguiente error:
Memo 17: Could not convert variant of type(null) into type(string)
Variable o campo desconocido: CABFACTU.'CODPAGO'

Me funcionaba bien antes de actualizar.

Saludos.

Re: error CallHBFunc()

Posted: Thu Dec 24, 2015 12:31 pm
by Ariel69
hola,
proba q valor recibe nCodigo en la funcion, tal vez sea NIL

Saludos.

Re: error CallHBFunc()

Posted: Thu Dec 24, 2015 1:18 pm
by datato
Ariel69 gracias por responder, pero no es eso.

Ncodigo siempre tiene valor numérico. Esta misma función verpago() la utilizo también dentro de un browse y me devuelve perfectamente en una de las columnas de dicho browse el valor texto de la forma de pago de ncodigo.

Insisto antes de la actualización me funcionaba, pero no se que hacer.

Saludos.

Re: error CallHBFunc()

Posted: Tue Dec 29, 2015 2:54 pm
by datato
Hola a todos, disculpad que insista pero ya no se que más hacer.

He probado lo siguiente

[CallHBFunc('verpago',3]

el 3 en mi base de datos corresponde a Transferencia. Me imprime bien el informe, lógicamente con todos los registros con Transferencia.

[CallHBFunc('verpago',1)]

el 1 en mi base de datos corresponde a Contado. Me imprime bien el informe, lógicamente ahora todos los registros son Contado.

Pero con [CallHBFunc('verpago',[<CABFACTU."CODPAGO">])] Da error de argumentos.

Help....

Re: error CallHBFunc()

Posted: Tue Dec 29, 2015 6:08 pm
by bingen
Te pongo un ejemplo elaborado que si funciona correctamente a ver si ves alguna diferencia.

En el FR3 llamo a una función NumToLetras que tiene 4 parámetros, el primero es un numero, el segundo un lógico y los otros 2 son textos
Del FR3:
Recibo por importe de: [NameCase(CallHbFunc('NumToLetras',[<MYSQLQUERY."importe">,True,'Euros','Centimos']))]* * * * * * * * * * * * * * * *

Y la función en mi programa es esta:

// Argumentos: nValor = Valor númerico a convertir
// lMasculino = Verdadero o Falso (defecto verdadero)
// cDescUnidad = Descriptor para las unidades por defecto "€"
// cDescDecimal = Descriptor para las decimales por defecto "Cent."
//
// Devuelve: Cadena con el literal del número


FUNCTION NumToLetras(nValue, lMale, cDescUnidad, cDescDecimal)

Re: error CallHBFunc()

Posted: Wed Dec 30, 2015 8:17 am
by datato
Bingen gracias pero no se que ocurre y porque no funciona. No he cambiado nada y antes funcionaba

¿Tu has actualizado la librería con la ultima actualización del 1/12/2015
versión 1.5.1510.16?

Saludos.

Re: error CallHBFunc()

Posted: Wed Dec 30, 2015 5:47 pm
by ignacio
Buenos días,

Como siempre decimos mande un pequeño ejemplo que muestre el error. No obstante:

1) En mi opinión no tiene mucho sentido achacar el problema a FRX cuando funciona con algunos registros si y otros no.

2) Es muy probable que con anteriores versiones de FRX no le fallase, pero supongo que los registros de la base de datos no son los mismos de entonces.

3) Le sugiero que primeramente haga la SELECT con alguna herramienta de mantenimiento de la base de datos que está usando y COMPRUEBE CON MUCHO DETENIMIENTO que ningún registro tiene el campo 'forma de pago' con valor NULO.

Si nos envía por MP el ejemplo y su número de serie de FRX o factura nos pondremos con ello de inmediato.

Un saludo y felices fiestas

Re: error CallHBFunc()

Posted: Thu Dec 31, 2015 1:47 pm
by datato
Ignacio, gracias por contestar. Te contesto a tus puntos numerados

1. No me funciona ningún registro.
2. Los registros de la base de datos no son los mismos, pero si su formato.
3. Me podrías enviar a mi privado la compilación anterior de frx anterior a esta nueva actualización de diciembre para hacer pruebas.

Sigo haciendo pruebas de todas formas.

Si cambio el campo cabfactu."codpago" que es numérico, entero con dos dígitos y 0 decimales, lo cambio en mi base de datos a tipo texto de dos caracteres, entonces frx si hace su trabajo correctamente y me devuelve la información pedida en mi función verpago() correctamente.

No funciona cuando le envío a mi función la información del campo cabfactu."codpago" en numérico. En texto si funciona.

He tenido que cambiar en mi función la siguiente línea para que funcione. Parece ser que siempre FRX envía la información en texto a mi función, aunque el campo de la base de datos sea numérico.

if formapag->(dbseek(val(ncodigo)))

Saludos

Re: error CallHBFunc()

Posted: Thu Dec 31, 2015 1:54 pm
by datato
Ignacio, gracias por contestar. Te contesto a tus puntos numerados

1. No me funciona ningún registro.
2. Los registros de la base de datos no son los mismos, pero si su formato.
3. Me podrías enviar a mi privado la compilación anterior de frx anterior a esta nueva actualización de diciembre para hacer pruebas.

Sigo haciendo pruebas de todas formas.

Si cambio el campo cabfactu."codpago" que es numérico, entero con dos dígitos y 0 decimales, lo cambio en mi base de datos a tipo texto de dos caracteres, entonces frx si hace su trabajo correctamente y me devuelve la información pedida en mi función verpago() correctamente.

No funciona cuando le envío a mi función la información del campo cabfactu."codpago" en numérico. En texto si funciona.

He tenido que cambiar en mi función la siguiente línea para que funcione. Parece ser que siempre FRX envía la información en texto a mi función, aunque el campo de la base de datos sea numérico.

if formapag->(dbseek(val(ncodigo)))

Saludos

Re: error CallHBFunc()

Posted: Fri Jan 01, 2016 8:38 pm
by ignacio
Hola,

Por lo que cuenta el problema surge porque FR envía el parámetro a la función como si fuera de tipo carácter y no de tipo numérico. Compruebe con la función Valtype() el tipo de parámetro que recibe. Si éste es de tipo texto y en la base de datos es numérico compruebe con las funciones de FR el tipo del dato en la base de datos. Ahora mismo no tengo idea de la función equivalente a Valtype() en FR, lo tendría que ver el próximo lunes. Si el tipo en la base de datos es correctamente tratado por numérico en FR puede hacer otra prueba, que es llamar a la función pasándole un número y comprobando si en Xailer se comporta como número a cadena.

Un saludo y feliz año

Re: error CallHBFunc()

Posted: Sat Jan 02, 2016 8:39 pm
by datato
Ignacio, efectivamente es como indicas.

Sea el campo del tipo que sea, la función de FRX [CallHBFunc('verpago',campo] envía el contenido de campo en formato C - Carácter aunque dicho campo en la mi base de datos es numérico.

Por ello para arreglarlo hice


if formapag->(dbseek(val(ncodigo)))

Pasando el contenido de ncodigo a numérico con la función Val(ncodigo)

Saludos