Buenas noche estoy haciendo un programa en access que me pueda comparar dos monto y escoge cual es el mayor de los dos

Estoy usando esta formula en macro en access si me puede decir cual es mi erro se lo agradesco gracia

Function calculo(numero_mayor As Double, numero_menor As Double) As Double

Dim dividendo As Double
Dim divisor As Double
' calculo el mayor entre 1 y 2
If numero_mayor > numero_menor Then
dividendo = numero_mayor
Else
dividendo = numero_menor
End Function

Me esta dando un error

2 respuestas

Respuesta
1

Me surgen un montón de preguntas

1º ¿Es necesario declarar las variables como doble?,¿No vale con simple?

2º Si, por lo que se vé en lo que has puesto, no vas a utilizar la variable Divisor para nada, porqué la declaras

3º Las funciones hay que declararlas como Públicas o Privadas. Voy a tratar de explicarme. Las públicas las puedes usar en cualquier parte de la base, y las creas en un módulo. Las privadas las puedes utilizar sólo en el objeto donde se declare.

Por eso tendrías que ponerlas como

Public function Calculo......

ó Private Function Calculo.....

De todas formas, si pudieras concretar un poco más para que vas a usarla, se podría decir algo más aproximado, porque me da la impresión que no sería necesario.

Por ejemplo,

Y solo le digo lo del if en el evento Después de actualizar del cuadro de texto Monto2, que es cuando puede comparar

Private Sub Monto2_AfterUpdate()
If Monto1 > Monto2 Then
Dividendo = Monto1
Else
Dividendo = Monto2
End If
End Sub

Y no necesito declarar ninguna función.

Respuesta
1

Tu error es que no le estás dando una valor para que lo devuelva la función, y que también te falta un End If. Si lo pones así, no te dará ningún error y la función te devolverá el mayor de los dos números que le pasas como argumento:

Function calculo(numero_mayor As Double, numero_menor As Double) As Double
' calculo el mayor entre 1 y 2
If numero_mayor > numero_menor Then
calculo= numero_mayor
Else
calculo= numero_menor
End If
End Function

De todas formas, debieras darle a tus funciones un nombre más acorde al trabajo que realizan, porque en esa función no realizas ningún cálculo, y quizás fuera mejor que la hubieses llamado, por ejemplo Mayor. Así, al usarla en el código es más fácil saber qué estás haciendo sin tener que ir a buscar dónde está esa función y ver qué hace...

Y por aclarar el punto 3 de lo que te dice Julián: aunque es una buena práctica declarar explícitamente el ámbito de funciones (Function) y procedimientos (Sub), realmente no es necesario hacerlo, sabiendo siempre que tendrán un ámbito Público o Privado en función de dónde las hayas creado.

Si la función o procedimiento la declaras en un módulo de un formulario o un informe, y no indicas explícitamente su alcance, serán privados. Esto quiere decir que da igual que hagas

Function calculo() As Double

que 

Private Function calculo() As Double.

Por el contrario, si las declaras en un módulo independiente, tendrán un alcance público, por lo que poner:

Function calculo() As Double

es lo mismo que 

Public Function calculo() As Double

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas