In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

error CallHBFunc()

FastReport for Xailer & [x]Harbour (English/Spanish)
datato
Posts: 49
Joined: Fri Jan 10, 2014 9:41 pm

error CallHBFunc()

Postby datato » Tue Dec 22, 2015 9:11 pm

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.
Ariel69

Re: error CallHBFunc()

Postby Ariel69 » Tue Dec 22, 2015 11:32 pm

Hola,
proba de definir :

Local cRet:= ""

Saludos.
datato
Posts: 49
Joined: Fri Jan 10, 2014 9:41 pm

Re: error CallHBFunc()

Postby datato » Wed Dec 23, 2015 5:51 am

Gracias por tu respuesta. No funciona.
User avatar
bingen
Posts: 397
Joined: Mon Jul 07, 2014 8:17 pm
Location: Bilbao
Contact:

Re: error CallHBFunc()

Postby bingen » Wed Dec 23, 2015 8:21 am

Quita las comillas dobles

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

y pon simples

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

creo que es eso.

Salu2.
BiSoft Desarrollo de software profesional
http://www.bisoft.es
datato
Posts: 49
Joined: Fri Jan 10, 2014 9:41 pm

Re: error CallHBFunc()

Postby datato » Wed Dec 23, 2015 4:50 pm

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.
Ariel69

Re: error CallHBFunc()

Postby Ariel69 » Thu Dec 24, 2015 12:31 pm

hola,
proba q valor recibe nCodigo en la funcion, tal vez sea NIL

Saludos.
datato
Posts: 49
Joined: Fri Jan 10, 2014 9:41 pm

Re: error CallHBFunc()

Postby datato » Thu Dec 24, 2015 1:18 pm

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.
datato
Posts: 49
Joined: Fri Jan 10, 2014 9:41 pm

Re: error CallHBFunc()

Postby datato » Tue Dec 29, 2015 2:54 pm

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....
User avatar
bingen
Posts: 397
Joined: Mon Jul 07, 2014 8:17 pm
Location: Bilbao
Contact:

Re: error CallHBFunc()

Postby bingen » Tue Dec 29, 2015 6:08 pm

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)
BiSoft Desarrollo de software profesional
http://www.bisoft.es
datato
Posts: 49
Joined: Fri Jan 10, 2014 9:41 pm

Re: error CallHBFunc()

Postby datato » Wed Dec 30, 2015 8:17 am

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.
User avatar
ignacio
Site Admin
Posts: 8578
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: error CallHBFunc()

Postby ignacio » Wed Dec 30, 2015 5:47 pm

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
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
datato
Posts: 49
Joined: Fri Jan 10, 2014 9:41 pm

Re: error CallHBFunc()

Postby datato » Thu Dec 31, 2015 1:47 pm

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
datato
Posts: 49
Joined: Fri Jan 10, 2014 9:41 pm

Re: error CallHBFunc()

Postby datato » Thu Dec 31, 2015 1:54 pm

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
User avatar
ignacio
Site Admin
Posts: 8578
Joined: Mon Apr 06, 2015 8:00 pm
Location: Madrid, Spain
Contact:

Re: error CallHBFunc()

Postby ignacio » Fri Jan 01, 2016 8:38 pm

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
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
http://www.xailer.com
http://www.xailer.info
datato
Posts: 49
Joined: Fri Jan 10, 2014 9:41 pm

Re: error CallHBFunc()

Postby datato » Sat Jan 02, 2016 8:39 pm

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

Return to “FastReport”