He creado un modulo con una función que recibe varios parámetros y devuelve uno. Al llamarla desde una consulta en Base, siempre obtengo un error de sintaxis, como si no reconociera la función.
Creo que vas a tener que detallar el tema, si quieres que alguien pueda ayudarte. ¿que modulo creaste? ¿en donde? ¿como haces para llamarlo?, etc.
He creado un modulo en la propia base de datos, con el siguiente código:
Function nulocero(x) As Double
If Isnull(x) Then
nulocero = 0
Else
nulocero = x
End If
End Function
A cualquiera de las funciones la llamo dentro de una consulta, por ejemplo:
Añado una columna y en el apartado campo pongo
nulocero([totdebe])-nulocero([tothaber])
Recibo el error
Access is denied: NULOCERO in statement [SELECT “Cuentas”.“NumeroCuenta”, “Cuentas”.“Nombre Cuenta”, “Tipo Cuenta”.“TipoCuenta”, “Grupos Cuenta”.“Grupo Cuentas”, “Grupos Cuenta”."N
Gracias por tu interés
Por que no creo que puedas llamar a una función basic desde una SQL, seguramente tendrás que generar la SQL desde basic y ejecutarla.
Muchas gracias, lo probare.
No tengo mucha idea, pero un SQL dentro de una macro/función en basic es el pan nuestro de cada día, pero el sentido inverso nunca lo vi (claro que tampoco es que haya visto mucho!)
Para hacer lo que pretendes, creo que tendrías que tener en los orígenes de la sentencia SQL la tabla donde estén los campos afectados y después utilizar CASWHEN (equivalente a IFF…).
Si no ya tendrías que ir a código.
Un saludo!
Muchas gracias por la respuesta. La verdad es que vengo de usar MS Access y ahí si se permite llamar a una función definida por el usuario desde una query. Esto lo uso mucho para crear campos calculados complejos, pero supongo que en Libre Office tendré que cambiar el método.