La función silnm para seleccionar el mayor valor

No puedo hacerlo solo )

Tengo el resultado de dos multiplicaciones

Campo A y Campo B y quiero que el mayor valor entre ambos campos se copie al Campo C

Ejemplo A = 4 y B = 5 el campo C = 5

             A = 6 y B = 4 el campo C =  6 (el mayor valor

Segundo el Campo A lleva asociado un Nombre (Isapre)

El Campo B también lleva asociado un nombre (Fonasa)

Este texto puede ir en otro campo texto y copiarse.

Yo lo confecciono manual miro cual de los dos es mayor, copio y pego el Nº en un campo Nº y el texto lo Pego en un campo texto y listo, pero pienso que puede ser automático.

1 respuesta

Respuesta
1

Por lo que comentas tienes dos problemas:

El primero, evidente, es que no sabes cómo discriminar entre valor mayor y menor y llevártelo al campo.

El segundo, más sutil, es que no puedes utilizar campos calculados para hacer lo que quieres, dado que si utilizaras campos calculados automáticamente el campo destino perdería el origen de datos. En pocas palabras, que si utilizas Iif() no puedes guardar el valor en el campo.

Puedes arreglar lo anterior de dos maneras:

La primera, que sería la más lógica en Access, es no utilizar campo para almacenar esos resultados. Cuando quisieras consultarlos la manera sería crearte una consulta y crear campos calculados sobre la consulta. Esos campos calculados se escribirían así en la consulta, en columnas vacías:

Para el resultado numérico:

ValorNum: Iif([CampoA]>[CampoB];[CampoA];[CampoB])

Para el resultado texto

ValorTexto: Iif([CampoA]>[CampoB];"Isapre";"Fonasa")

La segunda, si sigues queriendo llevarte los valores a un campo de una tabla, sería:

- En el evento "Al perder el enfoque" del campo A escribes:

...
Private Sub CampoA_LostFocus()
Dim vA as Variant; vB as VariantvA=me.CampoA.value
vB=me.CampoB.value
If isnull(vA) or isnull(vB) then exit sub
If vA>vB then
me.CampoNum.value=vA
me.CampoTexto.value="Isapre"
Else
me.CampoNum.value=vB
me.CampoTexto.value="Fonasa"
End if
End sub
....

- En el evento "Al perder el enfoque del campo B escribes:

...

Private Sub...
Call CampoA_LostFocus
End Sub
....

Y ya lo tienes.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas