Funciones en Access que
devuelven más de un valor en access (I)
Las funciones en Access sólo
pueden tener un valor de retorno, no obstante
existen varias maneras de obtener varios valores
de una misma función.
La primera forma se pude
definir en el argot informático como multi-retorno
a pedales pero no por ello es menos efectiva que
otras más sofisticadas.
Consiste en ir pidiendo los
valores en sucesivas llamadas a la misma función
utilizando un parámetro para seleccionar el retorno
pedido. Tiene el inconveniente de que los valores
devueltos (retornados) siempre deben ser del mismo
tipo:
Function MultiRetorno(Valor
As Integer) As String
Select Case Valor Case 1
MultiRetorno = "Primer
retorno"
Case2
MultiRetorno = "Segundo
retorno"
Case Else
MultiRetorno = "Error"
End Select
End Function
Funciones en Access que
devuelven más de un valor (II)
Como continuación al anterior
truco, presentamos una manera más refinada de
obtener varios valores de retorno de una función
en Access. La alternativa es pasar a la función
tantos argumentos como valores queremos que retorne
y hacer que la función los modifuque. En este
caso, se tiene la ventaja de poder retornar valores
de distintos tipos:
Function MultiRetorno(R1
as integer, R2 as string)
R1 = 1 R2 = "Segundo
valor de retorno"
End Function
Funciones en Access que
devuelven más de un valor (y III)
Para finalizar esta serie
de trucos presentamos las forma más elegante (y
sofisticada) de obtener varios valores de retorno
de una misma función en Access. El lenguaje VBA
de Access permite que una función devuelva una
estructura de valores. en el siguiente ejemplo
se muestra cómo definir una estructura y utilizarla:
Public Type Multivalor
R1 As Integer R2 As String
End type
Una vez definido el nuevo
tipo, se puede utilizar como valor de retorno
de una función:
Function MultiRetorno() As
MultiValor
MultiRetorno.R1 = 950 MultiRetorno.R2
= "Segundo valor devuelto"
End Function
Con el uso de estructuras
queda definitivamente resuelto el problema de
las funciones que devuelven más de un valor.
|