En el capitulo anterior vimos lo procedimientos sub, otro de los tipos de procedimientos son las Funciones, que al igual que los procedimientos sub están delimitados por Function y End Function.
La principal diferencia entre un procedimiento sub y un procedimiento Function es que este ultimo devuelve un valor. Entre los delimitadores se escribe el código que va a realizar las tareas que deseemos y al final devolverá un valor, son las llamadas funciones.
Para declarar una Función empezaríamos, por ejemplo poniendo la palabra Public si quisiéramos que esta función sea accesible desde cualquier parte de Access, después la palabra Function, después el nombre de la Función, después del nombre abriríamos los paréntesis y pondríamos los parámetros que necesitáramos cerraríamos el paréntesis y finalmente pondríamos el tipo de datos que devolvería la función.
Supongamos que quisiéramos realizar una operación y que nos devolviera el resultado.
Esta seria la función:
Public Function Operacion(Valor1 As Double, Valor2 As Double) As Double
Operación = Valor1 * Valor2
End Function
Vamos aprobar esta Función en el formulario que hicimos anteriormente quitando el codigo que pusimos en el botón de comando cmdEjecutarProcedimiento, y colocando el siguiente.
Me.lblResultado.Caption = Operacion(Me.txtNumero1.value, Me.txtNumero2.value)
Quedando de esta manera
Private Sub cmdProcedimiento_Click()
Me.lblResultado.Caption = Operacion(Me.txtNumero1.value, Me.txtNumero2.value)
End Sub
Como podrán observar el código anterior ocupaba mas líneas de código para esta función solo ocupamos una. Tambien les comento este pequeño fragmento de código.
Me.txtNumero1.Value
En la parte Me., del código representa el formulario hace la referencia.
En la parte txtNumero1, representa el cuadro de texto que se encuentra en el formulario.
En la parte Value, representa el valor que contiene el cuadro de texto que se encuentra en el formulario.
Me.txtNumero1.Value, Entonces con el fragmento de código este, decimos que tomamos el valor del cuadro de texto que se encuentra en ele formulario actual.
Notaran que si ejecutan la función sin valores en los cuadro de texto aparecerá el siguiente mensaje de error.
Para esto existen dos funciones que podemos unir y evitar este error de valores nulos(campo vacío).
Para evitar este error que podemos hacer bueno, primero tenemos que convertir el valor del cuadro de texto a numérico, con la función Val(cadena), como se muestra en el ejemplo:
La funcion Val() permite convertir cualquier cadena a Numero.
Val(«23″) = lo convertiría a 23
Las comillas representan un valor cadena(String)
Pero que pasa si el al ejecutar la función Val() no tenemos nada generaría otro error de que no se tiene un valor numérico, entonces para eso existe la función Nz(Valor), esta función, opera así:
Nz(txtNumero1.value,»0»)
Aquí decimos que si el valor del cuadro de texto txtNumero1.Value es nulo(esta vacío), que le asigne el valor «0» de tipo cadena(String).
Entonces ya sabemos convertir un valor nulo a un tipo cadena, y una cadena que es numero, lo sabemos convertir a un valor numérico, como podríamos unir las dos funciones, ejemplo:
Val(Nz(txtNumero1.Value),»0″)
Aquí esta el ejemplo, el cual tiene el siguiente orden, es como las matemáticas primero se ejecutan el paréntesis que se encuentra adentro y después el de afuera.
Aquí primero se ejecuta la función Nz(txtNumero1.Value,»0″), porque?, porque primero tenemos que evaluar el valor del cuadro de texto txtNumero1, lo evaluamos y si es nulo(si esta vacío) entonces le ponemos la cadena numérica «0», porque cadena numérica?, porque una palabra no se puede convertir en un numero, pero un numero que esta como cadena si se puede convertir en numero, entonces decimos que si es nulo le aplicamos la cadena «0», al evaluar la función Nz(), entonces que nos queda no podemos multiplicar valores de cadena, lo que hacemos es convertirla a un valor numérico, ejemplo:
Val(Nz(txtNumero1.Value),»0″)
Aquí es cuando la convertimos, la conclusión es, la siguiente,
Si el valor del cuadro de texto txtNumero es nulo entonces ponle la cadena «0», pero no se puede multiplicar un valor cadena, entonces la convertimos a numero.